Raccourcisseur d'url

Soyez le premier à donner votre avis sur cette source.

Vue 8 776 fois - Téléchargée 844 fois

Description

Voici une petite source permettant de créer des liens courts à partir de liens complexes.
C'est bien entendu juste une base, vous pouvez l'améliorer si vous le souhaitez.

Tous vos conseils sont les bienvenus

La source est dans le zip,
vous pouvez tester la démo sur http://redir.be

Pour installer cette source il faut une base de donnée MySQL.
Elle peut également nécessiter le cache APC selon la configuration.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3
Date d'inscription
lundi 11 juin 2012
Statut
Membre
Dernière intervention
6 avril 2013

Bonjour à tous ,
moi j'ai une question , je suis débutant en Php et j'ai un projet de réalisation de raccourcisseur d'url, j'aimerai savoir si quelqu'un parmi vous saurai où est ce que je pourrai trouver un cours très détaillé qui explique le fonctionnement et la conception de ce genre de technologie car j'aimerai comprendre le mécanisme de fonctionnement avant de me lancé , je compte énormément sur vos aides et réponses merci d'avance.
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
3
salut , ça marche :)
mettre tous les string dans un fichier séparé pour une traduction facilitée
Messages postés
3
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
21 novembre 2006

Bonjour,

tout d'abord merci pour vos commentaires constructifs.

L'intérêt de la BDD est de prévoir de futures améliorations, comme un panel d'administration, etc
Effectivement la table était assez crade, j'ai modifié la structure pour cette version.
Pour ce qui est de la sanitization, je l'ai également ajoutée.
Pour le compteur étant donné que le site de base n'était pas trés visitée ce n'était pas dérangeant,
maintenant, il est configurable, et il y a la possibilité de le desactiver, de l'utiliser en mode simple ou de l'utiliser avec APC,
le principe est simple, les informations sont stockées dans un tableau en cache jusqu'à atteindre une limite configurable,
puis tout est ajouté dans la base. Cela permet de gagner en performances.
La table est également maintenant en UTF-8.
Merci LEFAUVE42 pour ta fonction de verification des URL, je l'ai ajoutée quasiment telle quelle, elle marche bien :)

Voila voila, encore une fois merci et n'hésitez pas à me donner vos impressions sur ce nouveau code :)
Messages postés
44
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
2 mars 2013

En fait, j'aurai plutôt dit que c'est le champ id qui ne sert à rien, puisqu'un code, a fonctionnellement la nécessité d'être unique (au passage une contrainte de type UNIQUE sur code si on la met pas en clé primaire est nécessaire).
Ensuite, j'ajouterai même que l'utilisation de regexp tout court pour tester si ca commence par http:// ou https:// est aussi excessif : substr ou substr_compare est suffisant.
VARCHAR(100) est trop court pour une URL. Les RFC disent qu'un nom de domaine fait maximum 255 caractères. Il faut ajouter ensuite la requête plus la query string. Je dirais qu'un VARCHAR(1000) est adéquat (depuis mysql 5.x (x>=1 il me semble), les varchar peuvent faire plus de 255).
Faire les requêtes après l'envoi des headers ne changera rien : le navigateur (ou même le serveur web (apache + mod_deflate par exemple)) va attendre la fin de chargement de la page pour interpréter (réciproquement envoyer).
Messages postés
239
Date d'inscription
vendredi 20 octobre 2006
Statut
Membre
Dernière intervention
20 avril 2009

Bonjour,

C'est sympa comme point de depart, mais j'ai quelques petites remarques :
- Tes requetes SQL utilisent beaucoup de conversion de collation. Pourquoi ne pas creer directement tes tables en UTF8 plutot que de te trainer le latin1_swedish_ci ?
- Tu n'as pas besoin de stoquer le code dans ta base, puisque tu peux l'obtenir simplement a partir de l'id, et inversement. Comme ca tu n'utilises plus que le champs id pour retrouver tes donnees, qui est deja indexe (les indexes sont importants comme le faisait remarquer X_Cli).
- Le type "LongText" me parait un peu "overkill" pour stoquer une URL. Un VARCHAR(100) devrait suffire, non ?
- Tu n'as aucune protection contre les SQL injection. Regarde un peu les fonctions mysql_escape_string() et mysql_real_escape_string() pour corriger ca.
- Ta fonction CheckURL est plutot maladroite. Tu devrais pouvoir la remplacer par une seule expression reguliere, et comme le disait aussi X_Cli, utiliser les expressions regulieres PERL au lieux des POSIX qui sont obsoletes depuis PHP 5.3. Ca devrait donner quelque chose comme ca :
function CheckURL($url)
{
return preg_match('@^https?://.+$@i',urldecode(trim($url)),$matches)?$matches[0]:'error';
}
(a tester, mais ca devrait etre bon).
- Ta fonction CheckURL() appelait deux fois urldecode(). Ca peut poser des problemes avec les url contenant des '+' ou des '%' par exemple.
- Faire deux requetes par redirection est quand meme couteux. Si tu veux vraiment garder un compteur, tu peux peut-etre faire renvoyer la redirection avant de faire la seconde requete. La charge sera sensiblement la meme sur tou serveur, mais le client attendra un peu moins longtemps.

Voila, il doit y avoir d'autres ameliorations, mais c'est deja un bon depart :o)

Bon courrage,
Eric
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.