2 Vragen over script

Status
Niet open voor verdere reacties.

jochemmmm

Gebruiker
Lid geworden
24 jan 2012
Berichten
12
Ik heb een url-shorten script:
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>
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!
 
Hoe kan ik ervoor zorgen dat de 'http://' weg gaat?
PHP:
$shorturl = ($use_rewrite == 1) ? "http://{$_SERVER['HTTP_HOST']}{$dir}{$id}" : "http://{$_SERVER['HTTP_HOST']}{$dir}{$filename}?id={$id}";
Vervangen door
PHP:
$shorturl = ($use_rewrite == 1) ? "{$_SERVER['HTTP_HOST']}{$dir}{$id}" : "{$_SERVER['HTTP_HOST']}{$dir}{$filename}?id={$id}";
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?
Dat getal komt uit dit stukje:
PHP:
$id			= count(file($file));
Kwestie van dus achterhalen wat die functies doen en dan aanpassen.
De vraag is alleen in hoeverre het script dan nog werkt aangezien die ID er voor zorgt dat hij bij de juiste URL uitkomt.
 
Laatst bewerkt:
PHP:
$shorturl = ($use_rewrite == 1) ? "http://{$_SERVER['HTTP_HOST']}{$dir}{$id}" : "http://{$_SERVER['HTTP_HOST']}{$dir}{$filename}?id={$id}";
Vervangen door
PHP:
$shorturl = ($use_rewrite == 1) ? "{$_SERVER['HTTP_HOST']}{$dir}{$id}" : "{$_SERVER['HTTP_HOST']}{$dir}{$filename}?id={$id}";
Dit had ik al eerder geprobeerd. Maar ik dat doe krijg ik wel een goede link te zien: 'mijnsite.org/1111' maar als ik er dan op klik krijg ik:
Not Found

The requested URL /mijnsite.org/2110 was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Dat getal komt uit dit stukje:
PHP:
$id			= count(file($file));
Kwestie van dus achterhalen wat die functies doen en dan aanpassen.
De vraag is alleen in hoeverre het script dan nog werkt aangezien die ID er voor zorgt dat hij bij de juiste URL uitkomt.
Dit hierboven is het hele script. Is er een andere manier om het te laten tellen met cijfers en getallen door elkaar?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan