Ik heb een url-shorten script:
Ik heb 2 vragen;
Als ik het 'uitvoer' krijg ik bijv 'http://websitenaam.com/23
Hoe kan ik ervoor zorgen dat de 'http://' weg gaat?
Hoe kan ik ervoor zorgen dat de '23' in dit geval niet optellend is, (bij de volgende word het dan 24, 25, etc) maar dat het een random code is van bijvoorbeeld 3 cijfers/letters door elkaar?
Alvast bedankt!
Code:
<?php
$file = 'u.txt';
/*
use mod_rewrite: 0 - no or 1 - yes
*/
$use_rewrite = 1;
/*
language/style/output variables
*/
$l_url = 'URL';
$l_nourl = '<strong>No url</strong>';
$l_yoururl = '<strong>URL:</strong>';
$l_invalidurl = '<strong>Invalid URL</strong>';
$l_createurl = 'Shorten!';
if(!is_writable($file) || !is_readable($file))
{
die('Cannot write or read from file. Please CHMOD the url file (urls.txt) by default to 777 and make sure it is uploaded.');
}
$action = trim($_GET['id']);
$action = (empty($action) || $action == '') ? 'create' : 'redirect';
$valid = "^(https?|ftp)\:\/\/([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*(\:[0-9]{2,5})?(\/([a-z0-9+\$_-]\.?)+)*\/?(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?(#[a-z_.-][a-z0-9+\$_.-]*)?\$";
$output = '';
if($action == 'create')
{
if(isset($_POST['create']))
{
$url = trim($_POST['url']);
if($url == '')
{
$output = $l_nourl;
}
else
{
if(eregi($valid, $url))
{
$fp = fopen($file, 'a');
fwrite($fp, "{$url}\r\n");
fclose($fp);
$id = count(file($file));
$dir = dirname($_SERVER['PHP_SELF']);
$filename = explode('/', $_SERVER['PHP_SELF']);
$filename = $filename[(count($filename) - 1)];
$shorturl = ($use_rewrite == 1) ? "http://{$_SERVER['HTTP_HOST']}{$dir}{$id}" : "http://{$_SERVER['HTTP_HOST']}{$dir}{$filename}?id={$id}";
$output = "{$l_yoururl} <a href='{$shorturl}'>{$shorturl}</a>";
}
else
{
$output = $l_invalidurl;
}
}
}
}
if($action == 'redirect')
{
$urls = file($file);
$id = trim($_GET['id']) - 1;
if(isset($urls[$id]))
{
header("Location: {$urls[$id]}");
exit;
}
else
{
die('Script error');
}
}
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<p class="response"><?=$output?></p>
<p>
<label for="s-url">URL:</label>
<input id="s-url" type="text" name="url" />
</p>
<p>
<input type="submit" class="button" name="create" value="<?=$l_createurl?>" />
</p>
</form>
Als ik het 'uitvoer' krijg ik bijv 'http://websitenaam.com/23
Hoe kan ik ervoor zorgen dat de 'http://' weg gaat?
Hoe kan ik ervoor zorgen dat de '23' in dit geval niet optellend is, (bij de volgende word het dan 24, 25, etc) maar dat het een random code is van bijvoorbeeld 3 cijfers/letters door elkaar?
Alvast bedankt!