Un raccourcisseur d’url EDIT!

Aujourd’hui je me suis mis en tête de me faire un script php me permettant de raccourcir mes url.

Pourquoi ? Parce-que …

Parce-que j’avais besoin d’un raccourcisseur d’url qui n’espionne pas les liens que je souhaite raccourcir.

Voici le commentaire de début de mon script :

/***************************/
/* Auteur : Purexo : http://twitter.com/Purexo_
/*
/* Ceci est un raccourcisseur d'url
/* Il fonctionne en 3 temps :
/* 1- l'utilisateur rentre son lien à raccourcir
/* 2- le lien est rentré dans la base de donné, la page fournit à l'utilisateur son lien
/* 3- le lien fourni contient une variable a contenant l'id du lien demandé une requete sql fourni le lien grace à l'id puis la page redirige vers le lien
/*
/* Conseil d'utilisation :
/* - utiliser ce script sous le non de index.php dans la racine du serveur qui lui seras "dédié"
/* - faire un peu d'urlrewriting afin que http://hostname/id redirige vers http://hostname/index.php?a=id (afin d'avoir le lien le plus court possible)
/* - avoir un nom de domaine très court genre li.fr
/*
/* Pourquoi avoir fait mon raccourcisseur d'url ? :
/* - Pour m'entrainer
/* - j'en souhaitais un le plus minimaliste possible : pas de pub, pas de temps d'attente, pas de vérification d'url (ce qui est à la fois un avantage et un désavantage)
/*
/* Avantage et désavantage : 
/* le script ne vérifie rien, n'altère rien : il exécute, j'imagine que par conséquent il y a de grosse faille de sécurité, mais cela me permet d'entrer des liens
/* auto-destructible via zerobin sans que celui-ci ne soit analysé et donc détruit par une machine automatiquement.
/*
/* idée d'amélioration :
/* - fournir le lien avec l'id en hexadécimal. (toujours pour grappiller un peu de place)
/* - le remettre en décimal pour exécuter la requête sql avec redirection
****************************/

Je pense qu’après cela il n’y à pas grand chose à rajouter hormis le fait que j’utilise le SGBD mysql pour faire tourner ma BDD.

Voici mes sources :

short.php :

<?php
/***************************/
/* Auteur : Purexo : http://twitter.com/Purexo_
/*
/* Ceci est un raccourcisseur d'url
/* Il fonctionne en 3 temps :
/* 1- l'utilisateur rentre son lien à raccourcir
/* 2- le lien est rentré dans la base de donné, la page fournit à l'utilisateur son lien
/* 3- le lien fourni contient une variable a contenant l'id du lien demandé une requete sql fourni le lien grace à l'id puis la page redirige vers le lien
/*
/* Conseil d'utilisation :
/* - utiliser ce script sous le non de index.php dans la racine du serveur qui lui seras "dédié"
/* - faire un peu d'urlrewriting afin que http://hostname/id redirige vers http://hostname/index.php?a=id (afin d'avoir le lien le plus court possible)
/* - avoir un nom de domaine très court genre li.fr
/*
/* Pourquoi avoir fait mon raccourcisseur d'url ? :
/* - Pour m'entrainer
/* - j'en souhaitais un le plus minimaliste possible : pas de pub, pas de temps d'attente, pas de vérification d'url (ce qui est à la fois un avantage et un désavantage)
/*   Je pense rajouter une regex pour tester si c'est un lien, mais c'est tout (en meme temps si c'est pas un lien qui est fourni il n'y a aucun interet, que ce sois pour l'user, ou pour son stockage dans la BDD)
/*
/* Avantage et désavantage : 
/* le script ne vérifie rien, n'altère rien : il exécute, j'imagine que par conséquent il y a de grosse faille de sécurité, mais cela me permet d'entrer des liens
/* auto-destructible via zerobin sans que celui-ci ne soit analysé et donc détruit par une machine automatiquement.
/*
/* idée d'amélioration :
/* - fournir le lien avec l'id en hexadécimal. (toujours pour grappiller un peu de place)
/* - le remettre en décimal pour exécuter la requête sql avec redirection
****************************/

    $mysqli = new mysqli("localhost", "root", "********", "shorter"); //connection à la bdd (shorter c'est le nom de la base de donné')
    
    if(isset($_GET["a"])){
        $req = "SELECT link FROM links WHERE id = " . $_GET['a'] ;
        $res = $mysqli->query($req);
        $row = $res->fetch_assoc();
        $link = $row['link'];
        //echo $link;
        $test = header('Location: '.$link);
        //echo $test;
    }

?>
<!DOCTYPE html>
<html>
  <head>
    <title> Raccourcisseur d'url </title>
  </head>
  <body>
    <center>
        <h1> Bienvenue sur ce racoursisseur d'url </h1>
            <?php
                
                if(isset($_POST['lien'])){
                    $req = 'INSERT INTO links ( link ) VALUES ("'.$_POST['lien'].'")';
                    $mysqli->query($req);
                    $link = "https://purexo.tk/short.php?a=".$mysqli->insert_id; // ligne à changer en fonction de votre hébergement : http://hostname/nomduscript.php?a=
                    echo '<p><a href="'.$link.'">Votre Lien</a></p>';
                }
                
            ?>
            <form method="post" action="short.php"> <!-- nom de votre fichier.php -->
                <p>Votre lien à raccourcir</p>
                <textarea name="lien">https://purexo.tk/</textarea><br />
                <input type="submit" value="Envoyer" />
            </form>
    </center>
  </body>
</html>

shorter.sql :

CREATE DATABASE shorter;
USE shorter;

CREATE TABLE links (
  id bigint unsigned NOT NULL AUTO_INCREMENT,
  link text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (id)
);

Si vous avez des questions, des conseils (genre faille de sécurité) n’hésitez pas ^^ !

En attendant vous pouvez tester ça ici : short.php

 

EDIT :  j’ai maintenant un nom de domaine dédié pour ce service, le code source est dispo sur github et j’ai finalement opté pour SQLite3

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

quatre-vingts-dix six − quatre-vingts-dix trois =