Soucis avec "include"

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 : Soucis avec "include"

par dunbar » 23 avr. 2007, 12:07

Ok parfait
Donc je vais faire un fichier qui va contenir uniquement mes $variable de session et qui lui sera uniquement inclue dans le premier fichier (connexion).
Et un autre fichier qui lui va contenir mes valeurs et qui sera inclue dans chaque fichier qui en aurait bessoin ou faire un include_once dans chaque fichier du site

C'est exact :?: :wink:

par Ryle » 23 avr. 2007, 11:59

Ben disons qu'au lieu de
$ref                    = $_POST ['ref_client'][1]; 
Il faudrait un minimum de test avant de récupérer et d'utiliser les variables :
if (isSet($_POST ['ref_client']) && isSet($_POST ['ref_client'][1])) 
  $ref = $_POST['ref_client'][1]; 
else 
  $ref = 'valeur par défaut si jamais les index ne sont pas définis';

Ceci étant, le code suivant :
include "include/const.php"; 
header('Location:'.$_SESSION['url']);
Exécute l'include puis quitte la page. Donc en dehors des variables placées en session, aucune autre valeur ne sera conservée. Seules les sessions (et cookies) sont accessibles d'une page sur l'autre sans nécessiter d'être transmises.

En gros, il va exécuter ton script, placer les valeurs dans tes variables, puis une fois le script exécuté, toutes les variables seront détruites (en dehors de celles en session naturellement). Donc à moins de renvoyer les données vers la page suivante, il est normal que tu ne retrouves pas tes variables renseignées :)

par dunbar » 23 avr. 2007, 11:34

Salut,

Ok pour le session_start() je l'enlève des includes
Un fichier de constantes devrait contenir des valeurs et non pas des variables à mon sens...
C'est à dire ? :wink:
que se passe-t-il si aucun formulaire n'a été envoyé en $_POST ? As-tu toujours les mêmes index ? s'agit-t-il toujours de tableaux ?
Oui
Idem pour $data, ou $_SESSION .. tu ne fais aucun test, aucune vérification sur leur existence avant de les utiliser...
Pourrais tu me donner un exemple stp

Sinon l'erreur que j'ai est quand j'inclu le fichier const dans les page 1 et 2 plus aucune $variable ne passe ?
Et si je ne l'include (même quand je l'inclue d'ailleurs) je n'ai rien quand je fait par exemple
 echo $gsm ; 
Pourrais tu me dire comment il serait judicieux que m'y prenne :cry:

D'avance merci

par Ryle » 23 avr. 2007, 11:26

Un fichier de constantes devrait contenir des valeurs et non pas des variables à mon sens... que se passe-t-il si aucun formulaire n'a été envoyé en $_POST ? As-tu toujours les mêmes index ? s'agit-t-il toujours de tableaux ?
Idem pour $data, ou $_SESSION .. tu ne fais aucun test, aucune vérification sur leur existence avant de les utiliser...

Par ailleurs un session_start() dans un fichier inclu me parait pas des plus judicieux... c'est généralement une instruction que l'on passe au début du script, et c'est un coup à la passer deux fois (comme ici) ou à l'oublier et à ne pas comprendre pourquoi on a un problème d'entête déjà envoyé au navigateur parce qu'on aura fait un echo avant l'include...

Soucis avec "include"

par dunbar » 23 avr. 2007, 10:57

Bonjour,

je suis occupé à refaire mon site, je commence avec un fichier (connexion) comme ici.
include_once "data/config.php";


if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion'){
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {



                 // on teste si une entrée de la base contient ce couple login / pass
                               $sql = '
                               SELECT
                               login,
                               name,
                               url,
                               droit,
                               tech,
                               gsm,
                               email
                               FROM membre
                               WHERE login="'.addslashes($_POST['login']).'" AND pass_md5="'.md5(addslashes($_POST['pass'])).'"';

                               $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
                               $data = mysql_fetch_array($req);



mysql_close();
// si on obtient une réponse, alors l'utilisateur est un membre
                   if (mysql_num_rows($req) == 1){
                   session_start();
                   include "include/const.php";
                   header('Location:'.$_SESSION['url']);
                   exit();
                   }

// si on ne trouve aucune réponse, le visiteur s'est trompée soit dans son login, soit dans son mot de passe
                elseif ($data[0] == 0) {
                $erreur = 'Compte non reconnu.';
                  }

// sinon, alors la, il y a un gros problème
                else {
                $erreur = 'Problème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
                 }
    }
      else {
           $erreur = 'Au moins un des champs est vide.';
   }
}
Je crée un fichier que j'appel const.php qui me devrait (dans le but de n'avoir qu'un fichier à modifier par la suite :idea: ) lui me servir à placer toutes les $varible de mon site ici.
session_start();


            /* Déclaration des $variable formulaire*/



$ref                    = $_POST ['ref_client'][1];
$sql_id                 = $_POST ['IDot'][1] ;
$adr                    = $_POST ['adr_client'][1];
$name_client            = $_POST ['nom_client'][1];
$commentaire            = $_POST ['commentaire'][1];
$etat_installation      = $_POST ['etat_installation'][1];
$ta                     = $_POST ['TA'][1];
$prix                   = $_POST ['prix'][1];
$technicien             = $_POST ['technicien'][1];
$date_modif             = $_POST ['date_modif'][1];
$heure_modif            = $_POST ['heure_modif'][1];
$telephone              = $_POST ['telephone'][1];
$commune                = $_POST ['commune'][1];
$cd_code                = $_POST ['cd_code'][1];

            /*$variable de session*/


$_SESSION['login']      = $data['login'];
$_SESSION['name']       = $data['name'];
$_SESSION['droit']      = $data['droit'];
$_SESSION['tech']       = $data['tech'];
$_SESSION['url']        = $data['url'];
$_SESSION['gsm']        = $data['gsm'];
$_SESSION['email']      = $data['email'];

             /*Utilisation des $varible de session*/

$droit                  = $_SESSION['droit'];
$name                   = $_SESSION['name'];
$url                    = $_SESSION['url'];
$tech                   = $_SESSION['tech'];
$gsm                    = $_SESSION['gsm'];

$date_m                 = date("Y-m-j");
$heure                  = date("H:i");
$mois                   = date("n");



		//Tableau contenant la correspondances francaise des mois de l'année

		$fr_mois= array (  1 	=> 'Janvier',
							2 	=> 'Février',
							3 	=> 'Mars',
							4 	=> 'Avril',
							5 	=> 'Mai',
							6 	=> 'Juin',
							7 	=> 'Juillet',
							8 	=> 'Aout',
							9 	=> 'Septembre',
							10 	=> 'Octobre',
							11 	=> 'Novembre',
							12 	=> 'Décembre');

		//Construction de la date courante, au format francais, en utilisant le nom du mois en francais

		$date_fr = date('d')." ".$fr_mois[date('n')]." ".date('Y');
et la un soucis j'ai créer index2.php et index3.php pour vérifier que je récupère bien mes $variable
le fichier const.php s'il n'ai pas inclu dans index2 et index3.php fonction concernant mes $variable de session par contre si je l'includ dans index2 et index3 j'ai plus rien qui passe pourquoi :?:

d'avance merci