Protéger lien php

Signaler
Messages postés
110
Date d'inscription
dimanche 11 août 2002
Statut
Membre
Dernière intervention
21 juillet 2006
-
Messages postés
385
Date d'inscription
mardi 15 octobre 2002
Statut
Membre
Dernière intervention
19 décembre 2017
-
Salut je voudrais protéger mes liens php pour que, s'il ne provient pas de la page de download, il me fasse un die ou bien qu'il me renvoi sur le site. Exemple: http://www.msagentring.org/chars/, si vous prenez un lien pour dl un acs, il ne l'accepte que si il provient de la page.

Merci

8 réponses

Messages postés
385
Date d'inscription
mardi 15 octobre 2002
Statut
Membre
Dernière intervention
19 décembre 2017

dans la page de téléchargement tu mets :

setcookie("download","ok",3600);

et les liens vers les progs à télécharger seront de la forme
telecharger.php?id=N

dans la page telecharger.php tu mets :
<?

switch($id) {
case 1 : $adresse_prog = "http://coincoin/";
case 2 : $adresse_prog = "../test.exe";
case 3 : $adresse_prog = "/teset/easyphp.exe";
// etc.
}

if(($download == "ok" && !ereg("download=ok",$QUERY_STRING)) || $HTTP_REFERER == "http://www.adresse_page_de_téléchargement") {

header("Location: $adresse_prog");

}

?>

donc je récapitule, dans la page de téléchargement, les liens pointeront vers la page telecharger.php?id=(n° du programme).

la page télécharger sera celle que j'ai faites cidessus.
normalement ca marche mais comme j'ai pas testé le script (je l'ai fait comme ça) j'en suis pas totalement sur. mais si t'as problème dis-le moi

a+
Messages postés
110
Date d'inscription
dimanche 11 août 2002
Statut
Membre
Dernière intervention
21 juillet 2006

Ça ne marche pas. La page 1.php me donne ça:
Warning: Cannot add header information - headers already sent by (output started at d:\program files\easyphp\www\1.php:2) in d:\program files\easyphp\www\1.php on line 3

Code dans 1.php:
[dl.php?id=2 edksfn]
<?
setcookie("download","ok",3600);
?>

Code dans dl.php:
<?
switch($id) {
case 1 : $adresse_prog = "http://coincoin/";
case 2 : $adresse_prog = "../test.exe";
case 3 : $adresse_prog = "/teset/easyphp.exe";
}
if(($download == "ok" && !ereg("download=ok",$QUERY_STRING)) || $HTTP_REFERER == "http://www.snakeunion.com") {
header("Location: $adresse_prog");
}
?>

Et j'ai une question, si le système fonctionne tu me donne l'autorisation de le mettre sur mon (futur) site?

a+
Messages postés
110
Date d'inscription
dimanche 11 août 2002
Statut
Membre
Dernière intervention
21 juillet 2006

J'oubliais, je l'ai testé sous easyphp.
Messages postés
385
Date d'inscription
mardi 15 octobre 2002
Statut
Membre
Dernière intervention
19 décembre 2017

tu dois mettre l'instruction:

setcookie("download","ok",3600);

tout en haut de la page, le plus en haut possible

ex :

<?
setcookie("download","ok",3600);
?>
<html>
...
</html>
Messages postés
385
Date d'inscription
mardi 15 octobre 2002
Statut
Membre
Dernière intervention
19 décembre 2017

remplace aussi :

if(($download == "ok" && !ereg("download=ok",$QUERY_STRING)) || $HTTP_REFERER == "http://www.snakeunion.com") {
header("Location: $adresse_prog");
}

par :

if(($download == "ok" && !ereg("download=ok",$QUERY_STRING)) || ereg("^(http\:\/\/www\.snakeunion\.com|http://127\.0\.0\.1)",$HTTP_REFERER)) {
header("Location: $adresse_prog");
}

remplace 127\.0\.0\.1 par l'adresse ip de ton site. mets des anti-slashs avant les points.

c mieux !!!!
Messages postés
385
Date d'inscription
mardi 15 octobre 2002
Statut
Membre
Dernière intervention
19 décembre 2017

remplace par ça en fait :

if(($download = = "ok" && !ereg("download=ok",$QUERY_STRING)) || ereg("^http\:\/\/(www\.snakeunion\.com| 127\.0\.0\.1 )",$HTTP_REFERER)) {
header("Location: $adresse_prog");
}
Messages postés
110
Date d'inscription
dimanche 11 août 2002
Statut
Membre
Dernière intervention
21 juillet 2006

Bon la si je vais sur exemple, dl.php?id=2, il me met erreur404 et si je vais sur dl.php, il me retourne a la page d'accueil de easyphp :( .
Messages postés
385
Date d'inscription
mardi 15 octobre 2002
Statut
Membre
Dernière intervention
19 décembre 2017

Mettre download.php et verif.php dans le même dossier.
Si tu ne touches à rien ça marche.
Chez moi ça marche (easyphp) donc ça marche forcément chez toi
et si avec toutes les explications que j'ai mises t'arrives pas à le faire marcher, renonce au php :-p

of course tu peux modifier les noms de tous les fichiers mais comme tu connais apparemment pas grand chose en php, contente toi d'abord de faire un copier/coller des codes et de bidouiller ensuite.

enfin ça :
/* XXX */ ET
// XXX ET
<!-- XXX -->

signifie que le texte XXX est en commentaire. donc tu peux le supprimer à ta guise.

PAGE download.php :

<?
// On envoie un cookie à l'internaute
setcookie("download","1",3600);
?>

<!-- Les liens vers les fichiers à télécharger (exemple) -->
<html>
[verif.php?id=1 Alien Ant Farm - Smooth criminal]

[verif.php?id=2 Avril Lavigne - Complicated]

[verif.php?id=3 Bal-Sagoth - When rides the scion of the storms]

<!-- EXEMPLE TYPE
[verif.php?id=NUMÉRO Télécharger un mp3]

-->
</html>

PAGE verif.php :

<?
switch($id) {

// On marque l'adresse des fichiers à télécharger en fonction de l'id

// id=1 corresprond à ce fichier :
case 1 : $fichier = "Alien Ant Farm - Smooth criminal.mp3"; break;
// id=2...
case 2 : $fichier = "Avril Lavigne - Complicated.mp3"; break;
// id=3...
case 3 : $fichier = "Bal-Sagoth - When rides the scion of the storms.mp3"; break;
// ETC.

/* SUITE EXEMPLE TYPE
case NUMÉRO : $fichier = "URL_DU_FICHIER";

URL_DU_FICHIER : du type ../mp3/x.mp3 par exemple ou http://www.bonjour.fr/x.mp3 ETC.
*/

}

// remplace www.tonsite.com par l'adresse de ton site
// remplace 127\.0\.0\.1 par l'adresse ip de ton site (si tu ne la connais pas, laisse tomber)

if(
// On vérifie que le cookie est présent chez le visiteur
($download == 1 && !ereg("download=1",$QUERY_STRING))
// Si le visiteur n'accepte pas les cookies et utilise ie, on vérifie d'où il arrive
|| ereg("^http://(www.tonsite.com|127\.0\.0\.1)",$HTTP_REFERER)
// Si le visiteur n'accepte pas les cookies et utilise netscape (0.0000000001% des visiteurs), il ne peut pas télécharger
// ton fichier. tant pis pour lui l'avait qu'à prendre ie.
) {

// Si l'internaute vient de la page download.php il peut télécharger le fichier
header("Location: $fichier");
} else {
// Sinon on l'envoie vers download.php
header("Location: download.php");
}
?>

ENFIN, DANS CET EXEMPLE LES FICHIERS :

Alien Ant Farm - Smooth criminal.mp3
Avril Lavigne - Complicated.mp3
Bal-Sagoth - When rides the scion of the storms.mp3

[ situés dans le même dossier ke verif et download. ]

pour toute info complémentaire ou si tu veux que j'insère directementles code dans tes pages, c sans prob.
a+