Executer du php a l'ouverture d'un lien
Résolu/Fermé
sunev
Messages postés
39
Date d'inscription
dimanche 29 mai 2016
Statut
Membre
Dernière intervention
16 mai 2017
-
Modifié par baladur13 le 14/12/2016 à 15:37
sunev Messages postés 39 Date d'inscription dimanche 29 mai 2016 Statut Membre Dernière intervention 16 mai 2017 - 17 déc. 2016 à 13:13
sunev Messages postés 39 Date d'inscription dimanche 29 mai 2016 Statut Membre Dernière intervention 16 mai 2017 - 17 déc. 2016 à 13:13
A voir également:
- Executer du php a l'ouverture d'un lien
- Lien url - Guide
- Créer un lien pour partager des photos - Guide
- Verifier un lien - Guide
- Rachid a créé un raccourci (alias ou lien) du fichier expositions sur son bureau. quel est le numéro de l'icône correspondant à ce raccourci ? ✓ - Forum Logiciels
12 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
15 déc. 2016 à 10:55
15 déc. 2016 à 10:55
Si tu préfères éviter l'Ajax, tu peux faire aussi comme google et d'autres :
au lieu d'un lien direct
Et tu crées une page redirect.php qui fait tout ce que tu avais prévu, et qui se termine par une redirection vers la page voulue :
Xavier
(PS : je n'ai pas de serveur PHP sous la main pour tester, tu auras peut-être besoin de jouer avec des fonctions d'encodage d'URL pour que ça fonctionne correctement. À tester...
https://www.php.net/manual/en/function.urldecode.php
https://www.php.net/manual/en/function.urlencode.php
)
au lieu d'un lien direct
<a href="https://www.adresse.com" rel="nofollow noopener noreferrer" target="_blank" />Cliquer ici</a>, tu fais un lien géré par ton serveur
<a href="redirect.php?lien=https://www.adresse.com" rel="nofollow noopener noreferrer" target="_blank"/>Cliquer ici</a>
Et tu crées une page redirect.php qui fait tout ce que tu avais prévu, et qui se termine par une redirection vers la page voulue :
<?php $filename = 'accueil.txt'; $somecontent = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; if (is_writable($filename)) { if (!$handle = fopen($filename, 'a')) { exit;} $somecontent.= " Click sur le lien le ".date('l d/m/Y')." à ".date('H').":".date('i').":".date('s').""; if (fwrite($handle, $somecontent."\r\n") === FALSE) { exit;} fclose($handle); header('Location: ' . $_GET['lien']); } else { echo "<br>Le fichier $filename n'est pas accessible en écriture ou n'existe pas"; } ?>
Xavier
(PS : je n'ai pas de serveur PHP sous la main pour tester, tu auras peut-être besoin de jouer avec des fonctions d'encodage d'URL pour que ça fonctionne correctement. À tester...
https://www.php.net/manual/en/function.urldecode.php
https://www.php.net/manual/en/function.urlencode.php
)
Salut,
Dans le Onclick, tu devrais mettre du javascript, qui irait appeler un script PHP contenant le code que tu présentes ici.
Ici cela n'a aucun sens.
PHP est un script côté serveur, qui permet de fournir une page HTML (je résume hein), donc quand un internaute affiche la page avec le lien, le code que tu montres s'exécute forcément, mais une fois la page affiché, le code PHP ne s'exécutera plus
Dans le Onclick, tu devrais mettre du javascript, qui irait appeler un script PHP contenant le code que tu présentes ici.
Ici cela n'a aucun sens.
PHP est un script côté serveur, qui permet de fournir une page HTML (je résume hein), donc quand un internaute affiche la page avec le lien, le code que tu montres s'exécute forcément, mais une fois la page affiché, le code PHP ne s'exécutera plus
jordane45
Messages postés
38289
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2024
4 703
14 déc. 2016 à 17:54
14 déc. 2016 à 17:54
Bonjour,
Le résumé de Nessdarth est correcte.
Pour faire ce que tu souhaites, tu vas devoir passer par de l'ajax.
Le résumé de Nessdarth est correcte.
Pour faire ce que tu souhaites, tu vas devoir passer par de l'ajax.
sunev
Messages postés
39
Date d'inscription
dimanche 29 mai 2016
Statut
Membre
Dernière intervention
16 mai 2017
Modifié par baladur13 le 15/12/2016 à 09:49
Modifié par baladur13 le 15/12/2016 à 09:49
bonjours, merci pour vos réponses
Je me defend en html et un peu en php, mais pas en javascript.
donc je pensais faire une page avec:
Mais voila il faudrait que depuis la page principale en cliquant pour ouvrir ce fichier php on face ouvrir directement le lien, parce que là c'est une autre page qui s'ouvre avec de nouveau un lien a cliquer.
Je n'ai pas eut le temps de trop chercher si c'était possible de le faire , si quelqu"un a une idée?
Je me defend en html et un peu en php, mais pas en javascript.
donc je pensais faire une page avec:
<?php $filename = 'acceuil.txt';$somecontent = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; if (is_writable($filename)) {if (!$handle = fopen($filename, 'a')) { exit;} $somecontent.= " Click sur le lien le ".date('l d/m/Y')." à ".date('H').":".date('i').":".date('s').""; if (fwrite($handle, $somecontent."\r\n") === FALSE) { exit;} fclose($handle); } else { echo "<br>Le fichier $filename n'est pas accessible en écriture ou n'existe pas";} ?> <center><h3><a href=https://www.mon lien.com>Cliquer ici</a></h3></center>
Mais voila il faudrait que depuis la page principale en cliquant pour ouvrir ce fichier php on face ouvrir directement le lien, parce que là c'est une autre page qui s'ouvre avec de nouveau un lien a cliquer.
Je n'ai pas eut le temps de trop chercher si c'était possible de le faire , si quelqu"un a une idée?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
sunev
Messages postés
39
Date d'inscription
dimanche 29 mai 2016
Statut
Membre
Dernière intervention
16 mai 2017
15 déc. 2016 à 21:47
15 déc. 2016 à 21:47
j'ai rajouté ce code (ici en gras) dans le fichier "redirect.php"
mais la page qui s'ouvre me dis "La page n’est pas redirigée correctement
Firefox a détecté que le serveur redirige
la demande pour cette adresse d’une manière qui n’aboutira pas.
La cause de ce problème peut être la désactivation ou le refus des cookies."
mais la page qui s'ouvre me dis "La page n’est pas redirigée correctement
Firefox a détecté que le serveur redirige
la demande pour cette adresse d’une manière qui n’aboutira pas.
La cause de ce problème peut être la désactivation ou le refus des cookies."
<?php
$page='http://siteartpeinture.free.fr';
$filename = 'acceuil.txt';$somecontent = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
if (is_writable($filename)) {if (!$handle = fopen($filename, 'a')) { exit;}
$somecontent.= " Click sur lien le ".date('l d/m/Y')." à ".date('H').":".date('i').":".date('s')."";
if (fwrite($handle, $somecontent."\r\n") === FALSE) { exit;} fclose($handle);
header('Location: ' . $_GET['$page']);
} else { echo "<br>Le fichier $filename n'est pas accessible en écriture ou n'existe pas";}?>
Tu devrais utiliser le code fourni par Reivax962
Tu as mis quoi au niveau du lien ?
Tu penses vraiment que $_GET['$page'] existe ?
Si tu veux vraiment utiliser la variable $page que tu as ajouté dans ton code,écrit le ainsi dans l'envoi du header:
Tu devrais lire des tutos sur l'utilisation du $_GET, je ne dis pas cela méchamment, mais il me semble qu'il y a quelques confusions et tu progressera en PHP
Tu as mis quoi au niveau du lien ?
Tu penses vraiment que $_GET['$page'] existe ?
Si tu veux vraiment utiliser la variable $page que tu as ajouté dans ton code,écrit le ainsi dans l'envoi du header:
header('Location: ' . $page);
Tu devrais lire des tutos sur l'utilisation du $_GET, je ne dis pas cela méchamment, mais il me semble qu'il y a quelques confusions et tu progressera en PHP
sunev
Messages postés
39
Date d'inscription
dimanche 29 mai 2016
Statut
Membre
Dernière intervention
16 mai 2017
15 déc. 2016 à 22:24
15 déc. 2016 à 22:24
merci Nessdarth
Ce n'est pas méchant de me faire voir les erreurs que j'ai fais, je viens de me mettre a étudier le php et j'en suis qu'aux conditions avec if else.
je ne vais pas manquer de lire des tutos sur l'utilisation du $_GET, je sais les utiliser dans les formulaires et encore tout juste..
J'ai rectifier le code et ça fonctionne trés bien maintenant.
Merci de ton aide, j'aurais fini par trouver peut être, mais il vaut mieux un tiens que dix tu l'aura.
Ce n'est pas méchant de me faire voir les erreurs que j'ai fais, je viens de me mettre a étudier le php et j'en suis qu'aux conditions avec if else.
je ne vais pas manquer de lire des tutos sur l'utilisation du $_GET, je sais les utiliser dans les formulaires et encore tout juste..
J'ai rectifier le code et ça fonctionne trés bien maintenant.
Merci de ton aide, j'aurais fini par trouver peut être, mais il vaut mieux un tiens que dix tu l'aura.
sunev
Messages postés
39
Date d'inscription
dimanche 29 mai 2016
Statut
Membre
Dernière intervention
16 mai 2017
15 déc. 2016 à 23:50
15 déc. 2016 à 23:50
Il y a un petit probléme? ça fonctionne en local mais pas sur le serveur
et ça viens de
header('Location: ' . $page);
????????????????????????
Warning: Cannot modify header information - headers already sent by (output started at /mnt/169/sda/0/c/siteartpeinture/photos_ursula/redirect_lien1.php:2) in /mnt/169/sda/0/c/siteartpeinture/photos_ursula/redirect_lien1.php on line 8
et ça viens de
header('Location: ' . $page);
????????????????????????
Warning: Cannot modify header information - headers already sent by (output started at /mnt/169/sda/0/c/siteartpeinture/photos_ursula/redirect_lien1.php:2) in /mnt/169/sda/0/c/siteartpeinture/photos_ursula/redirect_lien1.php on line 8
Quand on utilise une redirection, le script PHP ne doit envoyer que le header de redirection et rien d'autre, même pas un espace;
L'erreur semble indiqué que ce n'est pas le cas, la page redirect_lien1.php doit comporter autre chose que les éléments qu'on a te fournir sur ce post.
L'erreur semble indiqué que ce n'est pas le cas, la page redirect_lien1.php doit comporter autre chose que les éléments qu'on a te fournir sur ce post.
sunev
Messages postés
39
Date d'inscription
dimanche 29 mai 2016
Statut
Membre
Dernière intervention
16 mai 2017
16 déc. 2016 à 19:54
16 déc. 2016 à 19:54
bien sur, voila le code du fichier "redirect_lien1.php"
le but de la maneuvre c'est d'incrire l'adresse ip du visiteur dans le fichier
"acceuil.txt" quand il clique sur le lien
qui se trouve sur la page principale
En local ça fonctionne trés bien
Sur le serveur du site non et un message d'erreur s'affiche.
j'ai essayé en ne laissant que ce code
et là ça fonctionne mais ça me sert a quoi de faire tout ce trafic si l'adresse ip du visiteur ne s'inscrit pas dans le fichier.
pour ouvrir ma page un simple lien suffit!
pourquoi tout fonctionne t'il bien en local et pas sur le serveur de mon site?
encore un casse tête chinois!
<?php
header('Location:https://www.Archers.com');
$filename = 'acceuil.txt';$somecontent = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
if (is_writable($filename)) {if (!$handle = fopen($filename, 'a')) { exit;}
$somecontent.= " Click sur le lien Les Archers le ".date('l d/m/Y')." à ".date('H').":".date('i').":".date('s')."";
if (fwrite($handle, $somecontent."\r\n") === FALSE) { exit;} fclose($handle);
}
else { echo "<br>Le fichier $filename n'est pas accessible en écriture ou n'existe pas";}?>
le but de la maneuvre c'est d'incrire l'adresse ip du visiteur dans le fichier
"acceuil.txt" quand il clique sur le lien
<a href="redirect_lien1.php" rel="nofollow noopener noreferrer" target="_blank">Les Archers</a>
qui se trouve sur la page principale
En local ça fonctionne trés bien
Sur le serveur du site non et un message d'erreur s'affiche.
j'ai essayé en ne laissant que ce code
<?php
header('Location:https://www.Les-Archers.com);
?>
et là ça fonctionne mais ça me sert a quoi de faire tout ce trafic si l'adresse ip du visiteur ne s'inscrit pas dans le fichier.
pour ouvrir ma page un simple lien suffit!
pourquoi tout fonctionne t'il bien en local et pas sur le serveur de mon site?
encore un casse tête chinois!
Je me demande du coup si tu ne rentres pas dans le cas où il y a une erreur et dans ce cas, tu envoies à la fois un header de redirection et le message "Le fichier acceuil.txt n'est pas ..."
et là évidemment tu ne peux pas faire de redirection.
En local tu as les droits d'écriture, mais est ce la cas sur le serveur?
vérifie que le fichier à le chmod égale à 777
Fais toi un script php qui aura pour but d'écrire dans un fichier, tu vérifieras au moins cette possibilité et comment y parvenir.
Tu utilises un outil fourni par ton hébergeur pour déposer tes fichiers sur ton espace ou un client FTP, à partir de d'un client ftp, il est facile de modifier le chmod d'un fichier, avec les outils internes des hébergeurs, je l'ignore, mais ça serait un comble que cela ne soit pas possible.
Bon courage, n'hésite pas si tu as des questions
et là évidemment tu ne peux pas faire de redirection.
En local tu as les droits d'écriture, mais est ce la cas sur le serveur?
vérifie que le fichier à le chmod égale à 777
Fais toi un script php qui aura pour but d'écrire dans un fichier, tu vérifieras au moins cette possibilité et comment y parvenir.
Tu utilises un outil fourni par ton hébergeur pour déposer tes fichiers sur ton espace ou un client FTP, à partir de d'un client ftp, il est facile de modifier le chmod d'un fichier, avec les outils internes des hébergeurs, je l'ignore, mais ça serait un comble que cela ne soit pas possible.
Bon courage, n'hésite pas si tu as des questions
sunev
Messages postés
39
Date d'inscription
dimanche 29 mai 2016
Statut
Membre
Dernière intervention
16 mai 2017
17 déc. 2016 à 13:13
17 déc. 2016 à 13:13
Toutes les pages de mon site ont ce code php, et ça fonctionne trés bien,
c'est mieux qu'un compteur de clicks.
je sais qu'elles images ont été vues et même téléchargées, n'importe quelle action qui est faite sur le site s'inscrit dans le fichier txt qui est sur le serveur, et avec un simple lien je le consulte.
avec l'ip du visiteur je vais sur "http://www.netscop.net/localiser-une-adresse-ip.html" et je sais d’où vient ce visiteur
extrait du txt
tu peut constater que le click sur un lien fonctionne sur la dernière ip 90.113.116.152 , mais voila la page elle ne s'ouvre pas(sauf en local ou ça fonctionne trés bien) et un message d'erreur me dit que l'adresse est mal défini
j'ai même grâce a ça détecté une ip frauduleuse, celle ou est inscrit BANNI.
que j'ai bloquée avec un fichier ".htaccess".
Il ne me manque plus donc que les clicks sur les liens, qui ouvre la page et inscrit en même temps l'info sur le fichier txt du serveur,ce qui fait l'objet de cette discution.
Je continu à chercher, merci de tes bons conseils Nessdarth .
Bonnes fêtes de fin d'année
c'est mieux qu'un compteur de clicks.
je sais qu'elles images ont été vues et même téléchargées, n'importe quelle action qui est faite sur le site s'inscrit dans le fichier txt qui est sur le serveur, et avec un simple lien je le consulte.
avec l'ip du visiteur je vais sur "http://www.netscop.net/localiser-une-adresse-ip.html" et je sais d’où vient ce visiteur
extrait du txt
52.90.248.135 Acceuil.txt le Tuesday 25/10/2016 à 23:43:48 Ashburn, United States ec2-52-90-248-135.compute-1.amazonaws.com BANNI
89.145.95.68 Acceuil.txt le Tuesday 25/10/2016 à 23:47:59 United Kingdom Londre angleterre centro-68.grapeshot.co.uk
64.20.243.132 Acceuil.txt le Wednesday 26/10/2016 à 16:36:50 Ville: Austin, United States net64-20-243-132.static-customer.corenap.com
78.46.21.97 Acceuil.txt le Sunday 13/11/2016 à 13:28:26 ville: Cassel
Pays: Germany mail.windrose.od.ua
78.46.21.97 Acceuil.txt le Sunday 13/11/2016 à 13:28:28
78.46.21.97 Peintures paysages le Sunday 13/11/2016 à 13:28:29
78.46.21.97 PeintPaysage PlageArres(3) le Sunday 13/11/2016à13:28:56
78.46.21.97 Click vidéo LevédeSoleil le Sunday 13/11/2016 à 13:28:50
78.46.21.97 Rando2016 Photo_(29) le Sunday 13/11/2016 à 13:29:12
90.113.116.152 Click sur le lien facebook thierry le Tuesday 22/11/2016 à 09:13:26
tu peut constater que le click sur un lien fonctionne sur la dernière ip 90.113.116.152 , mais voila la page elle ne s'ouvre pas(sauf en local ou ça fonctionne trés bien) et un message d'erreur me dit que l'adresse est mal défini
j'ai même grâce a ça détecté une ip frauduleuse, celle ou est inscrit BANNI.
que j'ai bloquée avec un fichier ".htaccess".
Il ne me manque plus donc que les clicks sur les liens, qui ouvre la page et inscrit en même temps l'info sur le fichier txt du serveur,ce qui fait l'objet de cette discution.
Je continu à chercher, merci de tes bons conseils Nessdarth .
Bonnes fêtes de fin d'année
15 déc. 2016 à 11:12