Hello,
j'ai trouvé un script 'raccourcisseur d'url' parfait pour les besoins d'un de mes futurs sites.
En gros il fonctionne bien pour pas mal de type d'url, mais pour une raison que j'ignore ca foire sur les urls avec plusieurs &
J'ai essayé de regardé a droite et a gauche au niveau de regedi mais là c'est vraiment du chinois pour moi... 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 un doute sur le tinytext au lieu du varchar 256 mais bon... de plus sous phpmyadmin, les champs sont en latin_swedish... j'ai aps compris pourquoi, est ce qu'il faudrait que je les passes en utf8 ? Car j'ai tenté le coup mais mon phpmyadmin veut pas
Voici le script :
<?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=post&am...
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'empeche pas d'utiliser le script, alors que mon premier probleme oui
Merci encore pour votre aide