Aller au contenu

Sujets conseillés

Posté (modifié)

Bonjour à tous, depuis peu je 'intéresse au php et à mysql, mais en autodidacte, donc j'avance a taton...

Pour les besoins d'un de mes futurs site, j'utilise un script 'raccourcisseur d'url', il fonctionne très bien sur pas mal de type d'url mais pas s'il y'a plus d'un & dans l'url...

J'ai essayé de regardé a droite et a gauche ce que j'aurais pu zapper mais la je sèche et comme il n'y a pas de support sur le site du développeur, je m'en remet a vous :)

Voici la bdd crée :

	CREATE TABLE `urls` (
`url_id` int(16) NOT NULL auto_increment,
`url_location` tinytext NOT NULL,
`url_tag` tinytext NOT NULL,
PRIMARY KEY (`url_id`)
);

J'ai eu un doute sur le tinytext surtout que bizzarement ca me l'a collé en latin_sewdish... et j'arrive pas a changer cela sous phpmyadmin...

Le script en lui meme :

<?php
define('mysql_hostname', 'localhost');
define('mysql_username', 'xxxx');
define('mysql_password', 'xxxx');
define('mysql_database', 'xxxx');
ob_start('relink');
$root = "http://$_SERVER[HTTP_HOST]" . ereg_replace('/$', '', dirname($_SERVER['PHP_SELF'])) . '/';
$action = $_GET['action'] ? $_GET['action'] : ($_POST['action'] ? $_POST['action'] : '');
$connection = @mysql_connect(mysql_hostname, mysql_username, mysql_password) && @mysql_select_db(mysql_database) || die('<code>' . mysql_error() . '</code>');
switch ($action) {
case 'generate_url':
$parsed = @parse_url($_POST['url']);
if ($parsed && strlen($_POST['url']) && ereg('\.', $_POST['url'])) {
if (eregi('^[a-z0-9-]+$', $_POST['tag'])) {
$tag = $_POST['tag'];
$sql = "SELECT * FROM `urls` WHERE `url_tag` = '$tag' OR `url_id` = '$tag'";
$q = mysql_query($sql);
$n = mysql_fetch_assoc($q);
if ($n) {
$cancel = true;
}
}
if (!$cancel) {
$url = ($parsed['scheme'] ? '' : 'http://') . (get_magic_quotes_gpc() ? mysql_real_escape_string(stripslashes($_POST['url'])) : mysql_real_escape_string($_POST['url']));
$sql = "INSERT INTO `urls` (`url_location`, `url_tag`) VALUES ('$url', '$_POST[tag]')";
$q = mysql_query($sql);
$id = mysql_insert_id();
if (!$tag) {
$result = 'Voici votre <strong>nouvelle URL courte</strong>: <a href="' . $root . $id . '/">' . $root . $id . '/</a> !';
} else {
$result = 'Voici votre <strong>nouvelle URL courte comprenant votre tag</strong>: <a href="' . $root . $tag . '/">' . $root . $tag . '/</a> !';
}
} else {
if (ereg('^[0-9]+$', $_POST['tag'])) {
$result = 'Tag indisponible, veuillez en essayer un autre !';
} else {
$result = 'Tag indisponible, veuillez en essayer un autre !';
}
}
} else {
$result = 'Indiquez une <strong>vraie URL</strong> s\'il vous plait !';
}
if ((bool) $_POST['javascript']) {
header('Content-Type: text/plain');
die($result);
}
break;
case 'redirect':
if (is_numeric($_GET['id']) || eregi('^[a-z0-9-]+$', $_GET['tag'])) {
if (!$_GET['tag']) {
$sql = "SELECT * FROM `urls` WHERE `url_id` = $_GET[id]";
} else {
$sql = "SELECT * FROM `urls` WHERE `url_tag` = '$_GET[tag]'";
}
$q = mysql_query($sql);
$r = mysql_fetch_assoc($q);
header("Location: $r[url_location]");
exit;
} else {
header("Location: $root");
exit;
}
break;
}
?>

Donc en gros une url de ce type : http://www.webmaster-hub.com/index.php?act...w_post&f=14

sera enregistré en base (mais tronquée), le script fonctionnera bien mais pour une raison que j'ignore et qui dépasse mes maigres connaissances il me ressortira que la premiere partie de l'url : http://www.webmaster-hub.com/index.php?act=post

J'aimerais faire en sorte qu'il enregistre la totalité de l'url en base de donnée et que tout fonctionne nickel au niveau de la redirection.

Merci beaucoup pour votre aide :)

PS: si j'osais je vous demanderais bien comment faire en sorte que je puisse mettre des '-' tirets dans les tags car pour le moment je ne peux mettre que des caractères alphanumériques... Mais bon c'est moins grave, cela ne m'empche aps d'utiliser le script, alors que mon rpemier probleme oui :)

Modifié par Dan

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...