Ajouter une include PHP dans un fichier TMP ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ajouter une include PHP dans un fichier TMP ?

par Hywan » 13 déc. 2007, 01:08

C'est vrai mais malheureusement je ne peux pas faire autrement avec les fichiers tmp.
Hein ? Renommes tes fichiers en .tpl par exemple, ce serait plus judicieux de les suffixer de .tmp. La remarque de Naholyr (pour une fois — nan ne me tape pas, je plaisante !) est parfaitement juste, prends en compte.

par Petit Beurre » 12 déc. 2007, 21:37

C'est vrai mais malheureusement je ne peux pas faire autrement avec les fichiers tmp.
Pour les permissions, je mets tout en 666 car si je mets en 444 je doute que cela fonctionne pour les fichiers appellés.;)

par naholyr » 12 déc. 2007, 21:14

Les droits d'exécution ne sont nécessaires qu'en mode CGI. Il faut donc jeter un œil, enfin de toute façon la permission importante c'est surtout le droit d'écriture qu'il faut vérifier.

Note : l'extension ".tmp" n'est probablement pas un choix très prudent, car c'est l'extension idéale quand on crée des fichiers... temporaires :)
La plupart des outils de "nettoyage" vont supprimer les fichier *~, *.bak, et *.tmp.

par Petit Beurre » 12 déc. 2007, 20:10

S'il s'agit d'un fichier qui n'a pas vocation à être modifié par ton application, un chmod 444 (seulement lecture pour tout le monde) est idéal pour un fichier inclu.
Dans le cas d'un fichier appelé (via l'url par exemple), il faut le droit d'exécution, il me semble :-k
Donc un 666 devrait être bon.

Merci beaucoup pour votre aide. :wink:

par gadgino » 12 déc. 2007, 19:15

si tu cherche le chemin absolut qui marche fait tout simplement:
echo dirname (__FILE__).'/script.php';

par zeus » 12 déc. 2007, 18:46

S'il s'agit d'un fichier qui n'a pas vocation à être modifié par ton application, un chmod 444 (seulement lecture pour tout le monde) est idéal pour un fichier inclu.
Dans le cas d'un fichier appelé (via l'url par exemple), il faut le droit d'exécution, il me semble :-k

par petit beurre » 12 déc. 2007, 18:35

Tu as totalement raison Zeus, bon je vais pas plus batailler alors mais dernière question du point de vue sécurité le chmod 666 est suffisant ou un chmod 444 ?

par zeus » 12 déc. 2007, 18:24

j'ai mis

Code : Tout sélectionner

<?php include (dirname (__FILE__).'/script.php'); ?>
et là ça marche !!
Mais ce code est tout à fait valide. Je suis même tenté de dire qu'il est conseillé :!:

Alors pourquoi est-ce que tu continues de chercher ?

par Petit beurre » 12 déc. 2007, 18:07

J'ai essayé mille et un chemin absolu et toujours rien ne s'affiche ... je suis vraiment perdu là.:cry:

Du point de vue sécurité le chmod 666 est suffisant ou un chmod 444 ?

par zeus » 12 déc. 2007, 17:30

Si tu compares tes chemins absolu, tu te rends bien compte que ce ne sont pas les même ...
Voilà pourquoi l'inclusion avec un chemin absolu ne fonctionne pas ;)

Sinon, un chmod 666 signifie que tout le monde peut lire et écrire sur ton fichier alors que 777, tout le monde peut lire, écrire et exécuter le fichier.

par Petit Beurre » 12 déc. 2007, 16:40

PS : Les fichiers PHP étaient en chmod 666 et je viens de les mettre en 777 mais j'ai toujours le même problème.

par Petit Beurre » 12 déc. 2007, 16:27

J'ai fait ce que tu as dit Zeus et il me donne mon chemin absolu : /home/www/monsite/www/test/script.php

C'est un véritable casse tête, l'include par défaut du script était en chemin absolu :

Code : Tout sélectionner

<?php include("/var/www/monsite/script.php"); ?>
et cela ne marche pas non plus car rien n'est affiché ... :cry:

par zeus » 12 déc. 2007, 16:09

Parce que _FILE_ représente le chemin du fichier dans lequel il est affiché.
Et que en utilisant dirname(__FILE__), tu utilises un chemin absolu (depuis la racine de ton serveur) et non plus relatif. Du coup, le chemin ne dépend plus du fichier dans lequel il est appelé, il est juste dès que tu inclus le template ;)

Fait
echo dirname (__FILE__).'/script.php';
et tu devrais comprendre la différence ;)

par Petit Beurre » 12 déc. 2007, 15:38

Salut Zeus, j'ai mis

Code : Tout sélectionner

<?php include (dirname (__FILE__).'/script.php'); ?>
et là ça marche !!

Je ne comprends pas d'ailleurs pourquoi ça marche avec ce code et pas avec l'include du haut ?

par zeus » 12 déc. 2007, 15:34

Même si tu mets le include dans ton fichier .tmp, le chemin doit être relatif par rapport au script appelé par le navigateur (page.php inclus template.tmp inclus libs.php => le chemin doit être relatif par rapport à page.php, pas template.php)