Comment récupérer le nom de la page appelante ?

Eléphant du PHP | 55 Messages

11 sept. 2011, 13:18

Bonjour,

Comme on le voit dans mon code sous-cité, je récupère le path de l'appelant ("x.htm" ou "x.html"); ainsi :

Code : Tout sélectionner

<?php header("Pragma: no-cache"); $adr2=$_SERVER['HTTP_REFERER']; ?>
Le problème c'est que j'ai la totalité du path, exemple :
Or ici je ne voudrais uniquement le nom de la page appelante, soit en l'espèce :
appelant.htm
Alors, existe-t-il une variable d'environnement qui fasse ça, ou faut-il effectuer un traitement de chaîne et dans ce cas, comment ?

Merci.
.
Cordialement.

Joe.
.

Petit nouveau ! | 3 Messages

11 sept. 2011, 14:05

Tu as la fonction parse_url() qui est très pratique.
http://www.php.net/manual/fr/function.parse-url.php

Sur le PHP_URL_PATH de ton exemple tu peux ensuite faire un simple explode sur les / pour gérer les catégories.

Eléphant du PHP | 55 Messages

11 sept. 2011, 16:03

Bonjour,

Merci,

Puis-je avoir un exemple qui fonctionne en se basant sur mon code stp :
$adr=$_SERVER['HTTP_REFERER']; // adr totale
$page(parse_url($adr)) // ???
echo "document.write(\"<aref='jo2.htm'>".$page." "."</a>\");";
// affiche

*

Pendant que j'y suis, ceci ne fonctionne pas :
echo "<a href='jo2.htm'>.$count.</a>"; 
Peux-tu me corriger ?

Merci encore.
.
.
Cordialement.

Joe.
.

ViPHP
AB
ViPHP | 5818 Messages

11 sept. 2011, 17:31

basename() sera plus simple d'utilisation dans ce cas :
$a = 'http://moi.free.fr/dossier/appelant.htm';

echo basename($a);

Eléphant du PHP | 55 Messages

11 sept. 2011, 17:40

Bonjour,

Merci mais je ne comprends pas, tu écris :
$a = 'http://moi.free.fr/dossier/appelant.htm';
echo basename($a);
Mais c'est
appelant.htm
Que je veux récupérer ???

Merci.
.
Cordialement.

Joe.
.

ViPHP
AB
ViPHP | 5818 Messages

11 sept. 2011, 17:53

Et bien justement si tu teste ce code n'obtiens tu pas "appelant.htm" ?

Eléphant du PHP | 55 Messages

11 sept. 2011, 18:03

Suite,

Mais oui, autant pour moi, chat marche ! Merci =D>
<?php
header("Pragma: no-cache");
$adr=$_SERVER['HTTP_REFERER'];
echo "document.write(\"<aref='jo2.htm'>".$adr." "."</a>\");";
echo "document.write(\"<aref='jo2.htm'>".basename($adr)." "."</a>\");";
Il me reste un problème d'affichage, sais-tu le résoudre, j'ai fait le code qui suit mais il ne fonctionne pas :
echo "<a href='jo2.htm'>.$count.</a>\n"; 
Merci.
.
Cordialement.

Joe.
.

ViPHP
AB
ViPHP | 5818 Messages

11 sept. 2011, 18:16

Si ta variable $count est définie précédemment ceci devrait fonctionner :
echo "<a href='jo2.htm'>$count</a>\n"; 
ou
echo '<a href="jo2.htm">'.$count.'</a>'."\n";
si tu veux faire afficher un retour html
echo '<a href="jo2.htm">'.$count.'</a><br />';

Eléphant du PHP | 55 Messages

11 sept. 2011, 18:29

Suite...

Hélas, y en a pas un qui marche, sauf la ligne écrite en js

Voici le code, tout est en bas, j'ai masqué la ligne JS, puis démasqué tes lignes une à une sans provoquer d'affichage :
<?php
header("Pragma: no-cache");
$adr=$_SERVER['HTTP_REFERER'];
echo "document.write(\"<aref='jo2.htm'>".$adr." "."</a>\");";
echo "document.write(\"<aref='jo2.htm'>".basename($adr)." "."</a>\");";

if (file_exists("jo2_compte.txt")) 
{
$file=@fopen("jo2_compte.txt", "r+"); 
fscanf($file, "%d", $count);
$count++;
rewind($file);
} 
else 
{
$file=@fopen("jo2_compte.txt", "w");
$count=1;
}
fputs($file, $count);
fclose($file);
echo "document.write(\"<aref='jo2.htm'>".$count."</a>\");";

//echo "<a href='jo2.htm'>$count</a>\n"; // marche pas

//echo '<a href="jo2.htm">'.$count.'</a>'."\n";

//echo '<a href="jo2.htm">'.$count.'</a><br />';

?>
Merci.
.
Cordialement.

Joe.
.

ViPHP
AB
ViPHP | 5818 Messages

11 sept. 2011, 18:41

Si ça marche ! testes !
$count = 10;
echo "<a href='jo2.htm'>$count</a>\n";
mais si tu veux un retour ligne dans le code html il faut faire
$count = 10;
echo "<a href='jo2.htm'>$count</a><br />";
ou mieux
$count = 10;
echo '<a href="jo2.htm">'.$count.'</a><br />';
Prends l'habitude de tester tes différents bouts de codes séparéments comme ça tu comprendras mieux l'origine des problèmes.

Eléphant du PHP | 55 Messages

11 sept. 2011, 19:11

Wouaf...
je n'y arrive pas, même en ayant mis en global la variable count, y a que le code js qui affiche, l'autre n'affiche pas, mais le reste fonctionne évidemment :

Ci-joint en zip dans un dossier les deux fichiers (le troisième txt se crée tout seul dans son répertoire).

Tu verras ainsi, en bas dans le code php, que le JS indiquer bien la valeur compteur, mais quand je masque le js pour démasquer le tien, plus rien ne s'affiche dans la page html, ça vient peut être d'autre chose, mais je suis un hyper-débutant dépassé !

Merci.
htm_php.zip
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
.
Cordialement.

Joe.
.

ViPHP
AB
ViPHP | 5818 Messages

11 sept. 2011, 19:18

Prends l'habitude de tester tes différents bouts de codes séparéments comme ça tu comprendras mieux l'origine des problèmes.

Eléphant du PHP | 55 Messages

11 sept. 2011, 19:31

Mais oui, mais comment veux-tu que j'identifie l'origine, je suis comme indiqué débutant, peut être que ta ligne va fonctionner toute seule, je te fais confiance évidemment tu à l'habitude, mais ensuite, comment vais-je pouvoir identifier la cause si elle est autres, certes en isolant peu à peu tous les éléments, ligne par ligne, et ensuite, si toutefois ça marche, je ne serais pas en mesure de voire où est l'erreur.

C'est peut être là où un forum est utile, le fait d'avoir l'expérience des autres, si tu ragardes le fichier php, tu vas en quelque minutes, si ce n'est seconde identifier les éléments qui peuvent causer problème, tandis que moi je vais y mettre des heures et des heures, si j'y arrive.

Merci de bien vouloir regarder.

Au plaisir, cordialement.
.
Cordialement.

Joe.
.

Mammouth du PHP | 672 Messages

12 sept. 2011, 12:17

Bonjour.
Mais oui, mais comment veux-tu que j'identifie l'origine
En reflechissant ? :twisted:
C'est peut être là où un forum est utile, le fait d'avoir l'expérience des autres, si tu ragardes le fichier php, tu vas en quelque minutes, si ce n'est seconde identifier les éléments qui peuvent causer problème, tandis que moi je vais y mettre des heures et des heures, si j'y arrive.
Pas d'accord...
L'intérêt d'un forum c'est de t'apprendre à programmer. Si c'est pour faire ton travail, on appelle ça des développeurs et ça se paye :evil:

Sinon, ton problème est mal posé. En particulier, tu ne décris pas le fonctionnement complet...
En fait tu as une page jo2.htm qui fait appel à un script JS externe appelé jo2_compteur.php.
Il faudrait que tu étudies le fonctionnement :
1. Le client demande la page jo2.htm.
2. Le serveur lui envoie.
2.a. Le serveur constate qu'il faut envoyer aussi le JS situé sur la page jo2_compteur.php.
3. Comme c'est un fichier PHP il est d'abord interprété, puis envoyé.
echo "<a href='jo2.htm'>$count</a>\n";
sera interprété comme

Code : Tout sélectionner

<a href='jo2.htm'>10</a>
, ce qui n'est pas du JS.
=> Le JS n'est pas interprété, et encore moins exécuté.
Alors que
echo "document.write(\"<a href='jo2.htm'>".$count."</a>\");";
sera interprété comme

Code : Tout sélectionner

document.write("<a href='jo2.htm'>10</a>
, ce qui est bien du JS...

Deux solutions :
1. Tu gardes le principe du code JS.
Le fichier jo2_compteur.php doit renvoyer du JS,
echo "document.write(\"<a href='jo2.htm'>".$count."</a>\");";
fonctionne.

2. Tu allèges - parce que je ne vois pas l'intérêt du JS ici (sauf si tu veux recharger régulièrement le compteur sans rafraichir la page).
=> Tu fais ton include("jo2_compteur.php"); et le fichier jo2_compteur.php doit renvoyer du html.
echo "<a href='jo2.htm'>$count</a><br />";
fonctionne.

Par contre, dans ce cas il te reste un problème : le serveur considère par défaut qu'un fichier .htm est un fichier HTML.
Du coup il ne le passe pas à l'interpréteur PHP, et le include() n'est pas lu.
Solutions - au choix : paramètrer le serveur pour qu'il interpète les fichiers HTML comme du PHP ou renommer jo2.htm en jo2.php (pour qu'il soit interprété comme du PHP)

Eléphant du PHP | 55 Messages

12 sept. 2011, 13:47

Bonjour,

Merci de ces précisions.

Je vais rester en html qui à l'aide du js calcule avec du php, puis le php renvoie en js les résultats au html.

Ceci, car si je passe en php total, le temps que je l'apprenne pour pouvoir faire un page qui en plus ne sera pas facilement portable (serveur <> d'apache), ben le temps n'en vaudra pas la chandelle. Il n'y a que le html qui passe partout, alors je fais le maximum avec lui.

Je n'ai pas de besoin ni de raison de programmer en php ou asp d'ailleurs, si ce n'est maintenant où je veux faire un compteur un peu plus consistant que ceux qui existent en scripts libres, c'est tout, alors je pense que tu seras de mon avis, je ne vais pas me lancer à fond dans le php juste pour faire un compteur élaboré...

Ce que je veux faire en un peu plus détaillé, est que le php (feuille de calculs en fait), crée dans le répertoire en cours les fichiers txt automatiquement selon le nom de l'appelant en html (deux fichiers txt : compteur et ip), bon ça j'ai réussi.
Ce qui est plus simple, il n'y a plus qu'à insérer le script js dans le html et de déposer avec ce dernier le fichier php.

Maintenant je dois gérer les dates (je ne sais pas, j'ai posé la question), et si la date du jour est différente de la date du fichier des ip, je recrée le fichier des ip par écrasement, sinon j'ajoute l'ip si inexistante et j'incrémente le compteur, et dans le cas contraire, si l'ip existe, je sors sans rien faire. Donc il me reste aussi à apprendre à lire en séquence un fichier et à comparer, tu vois, ensuite j'aurais fini. Je ne vais quand même pas apprendre tout le php pour faire ça, faut être honnête. Je n'ai rien pour ou contre le php, je suis chez Free et Free avale du php, je fais donc en php...

Toutefois, c'est quand même une grande cacophonie la programmation Internet, y a le html qui ne fait en gros que de l'affichage, en encore, pour l'améliorer il faut prendre un second langage, du css, et quand on veut faire de la programmation de fichier, il faut un troisième langage, du js pour appeler un quatrième langage, mais attention, pas n'importe quoi, c'est le serveur qui décide, généralement du php ou de l'asp (le java je ne sais pas, peut être), et ce n'est pas terminé, ce serait encore trop simple, ensuite ou ne peut pas créer le type de fichier que l'on veut, pour gérer les données il faut généralement appeler un sixième quasi-langage-paramétrage qui est le sql, ou alors faire du fichier texte non protégé (je préfère, j'adore la vraie programmation), mais bon, faut avouer que c'est un gros cirque le Net !

Alors évidemment je peux faire un site en php, seulement il ne sera pas portable partout a contrario du html (y a je crois des combines pour émuler de l'asp sous apache et du php sous iis, mais bon)... Et en plus un site php, va falloir modifier les centaines de référencement déjà effectués en html, alors tu comprendras que je demeure en html.

Sur le Net en fait, on se croirait avant les années 80 avec le cpm, la compatibilité PC ou pas, ensuite ça a été normé et maintenant c'est presque clair, il y a quelques langage majoritaires (c, c#, java, vbNet) qui font tous des exe qui sont tous exécutés par les OS existant en règle générale. Faudrait que le Net s'aligne sur ce principe, que tous les langages soient capables de permettre une programmation que tous les serveurs acceptent, tant que ça ne se fera pas ce sera un vrai cirque...

Au plaisir.
.
Cordialement.

Joe.
.