[php]problème de HEADER..($RACINE???)
Résolu/Fermé
maxime_B
Messages postés
788
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
15 juin 2010
-
23 juil. 2006 à 21:02
Darshu Messages postés 303 Date d'inscription lundi 30 janvier 2006 Statut Membre Dernière intervention 3 avril 2008 - 26 juil. 2006 à 09:44
Darshu Messages postés 303 Date d'inscription lundi 30 janvier 2006 Statut Membre Dernière intervention 3 avril 2008 - 26 juil. 2006 à 09:44
A voir également:
- [php]problème de HEADER..($RACINE???)
- Easy php - Télécharger - Divers Web & Internet
- Retour a la ligne php ✓ - Forum PHP
- Gpt header corruption ✓ - Forum Windows 10
- Aucun systeme de fichier n'a été choisi comme racine ✓ - Forum Ubuntu
- Racine carré en c ✓ - Forum C
5 réponses
maxime_B
Messages postés
788
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
15 juin 2010
55
24 juil. 2006 à 16:59
24 juil. 2006 à 16:59
eh bien voilà l code ou le header pose problème, mais je n'ai pas très bien comprit ta deuxième explication :(
if (isset($_POST['connexion']) && $_SESSION['logged'] == false) { //Vérification des autres variables. if (isset($_POST['login'],$_POST['mot_de_passe']) && !empty($_POST['login']) && !empty($_POST['mot_de_passe'])) { $login = htmlspecialchars($_POST['login']); $mot_de_passe = htmlspecialchars($_POST['mot_de_passe']); //Requête comptant le nombre de pseudos $_POST['pseudo'] $sql = mysql_query("SELECT COUNT(*) AS nb_login FROM site_membres WHERE login='".$login."'"); //Si le pseudo existe. if (mysql_result($sql,0,'nb_login') == 1) { //Information sur le compte du membre. $sql_infos = mysql_query("SELECT id, mot_de_passe, confirmation, niveau FROM site_membres WHERE login='".$login."'"); $donnees = mysql_fetch_array($sql_infos); //Hashage du mot de passe. $mot_de_passe_hash = md5($mot_de_passe); //Comparaison du mot de passe. if ($mot_de_passe_hash == $donnees['mot_de_passe']) { //Si $donnees['confirmation'] vaut 1. if ($donnees['confirmation'] == 1) { if (isset($_POST['souvenir']) && $_POST['souvenir'] == 'on') { //Temps d'expiration des cookies (1 an). $expire = time() + 3600 * 24 * 365; setcookie('login', $login, $expire); setcookie('mot_de_passe', $mot_de_passe, $expire); } $_SESSION['logged'] = true; $_SESSION['id'] = $donnees['id']; $_SESSION['login'] = $login; $_SESSION['niveau'] = $donnees['niveau']; header("location: /membres/index_membres.php");
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
24 juil. 2006 à 10:55
24 juil. 2006 à 10:55
Salut. Ton code est un peu bizarre pour une nouvelle page, tu pourrais mettre aussi celui de la page avec les header() ?
maxime_B
Messages postés
788
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
15 juin 2010
55
24 juil. 2006 à 12:06
24 juil. 2006 à 12:06
ok la voilà.
c'est la page index.php
je te mets le code en entier, vu qu'il n'y a pas trop de lignes en plus des gros codes.
c'est la page index.php
je te mets le code en entier, vu qu'il n'y a pas trop de lignes en plus des gros codes.
<?php //Démarrage de la session (à mettre avant tout code xhtml) session_start(); //Si la variable $_SESSION['logged'] n'existe pas on la créée. if (!isset($_SESSION['logged'])) { $_SESSION['logged'] = false; } //Inclusion du fichier contenant les identifiants de connexion à la base de données. $RACINE = "." ; require($RACINE."/config/config_db.php"); //Connexion à la base de données. mysql_connect($serveur, $utilisateur, $password); mysql_select_db($base); if ($_SESSION['logged'] == false) { if (isset($_COOKIE['login'], $_COOKIE['mot_de_passe'])) { //Vérification du pseudo. $login = htmlspecialchars($_COOKIE['login']); $mot_de_passe = htmlspecialchars($_COOKIE['mot_de_passe']); //Requête comptant le nombre de pseudos $_POST['pseudo'] $sql = mysql_query("SELECT COUNT(*) AS nb_login FROM site_membres WHERE login='".$login."'"); //Si le pseudo existe. if (mysql_result($sql,0,'nb_login') == 1) { //Vérification du mot de passe //Information sur le compte du membre. $sql_infos = mysql_query("SELECT id, mot_de_passe, confirmation, niveau FROM site_membres WHERE login='".$login."'"); $donnees = mysql_fetch_array($sql_infos); //Comparaison du mot de passe et vérification que le compte est confirmé. if ($mot_de_passe == $donnees['mot_de_passe'] && $donnees['confirmation'] == 1) { //Tout est bon, on connecte le membre. $_SESSION['logged'] = true; //Création de 2 variables de session, contenant des informations sur le membre. $_SESSION['id'] = $donnees['id']; //Id du membre. $_SESSION['login'] = $login; //Pseudo du membre. $_SESSION['niveau'] = $donnees['niveau']; //récupère le niveau du membre //Redirection vers la page membre. header("location: /membres/index_membres.php"); } } } } //Si la variable $_POST['connexion'] (bouton submit du formulaire) et la variable $_SESSION['logged'] vaut false (déconnecté) existent. if (isset($_POST['connexion']) && $_SESSION['logged'] == false) { //Vérification des autres variables. if (isset($_POST['login'],$_POST['mot_de_passe']) && !empty($_POST['login']) && !empty($_POST['mot_de_passe'])) { $login = htmlspecialchars($_POST['login']); $mot_de_passe = htmlspecialchars($_POST['mot_de_passe']); //Requête comptant le nombre de pseudos $_POST['pseudo'] $sql = mysql_query("SELECT COUNT(*) AS nb_login FROM site_membres WHERE login='".$login."'"); //Si le pseudo existe. if (mysql_result($sql,0,'nb_login') == 1) { //Information sur le compte du membre. $sql_infos = mysql_query("SELECT id, mot_de_passe, confirmation, niveau FROM site_membres WHERE login='".$login."'"); $donnees = mysql_fetch_array($sql_infos); //Hashage du mot de passe. $mot_de_passe_hash = md5($mot_de_passe); //Comparaison du mot de passe. if ($mot_de_passe_hash == $donnees['mot_de_passe']) { //Si $donnees['confirmation'] vaut 1. if ($donnees['confirmation'] == 1) { if (isset($_POST['souvenir']) && $_POST['souvenir'] == 'on') { //Temps d'expiration des cookies (1 an). $expire = time() + 3600 * 24 * 365; setcookie('login', $login, $expire); setcookie('mot_de_passe', $mot_de_passe, $expire); } $_SESSION['logged'] = true; $_SESSION['id'] = $donnees['id']; $_SESSION['login'] = $login; $_SESSION['niveau'] = $donnees['niveau']; header("location: /membres/index_membres.php"); } else { $erreur = "Le compte n'est pas confirmé !"; } } else { $erreur = "Le mot de passe est incorrect !"; } } else { $erreur = "Le login n'existe pas !"; } } else { $erreur = "Tous les champs doivent être remplis !"; } } else { $erreur = "Tu n'as pas soumis le formulaire ou tu es déjà connecté !"; } ?> <?php $RACINE="." ; include( $RACINE."/banniere/haut.php" ) ; ?> <?php $RACINE="." ; include( $RACINE."/menu/menu1/menu.php" ) ; ?> <div id="corps"> index <?php if(isset($erreur)) { echo $erreur ; } ?> </div> <?php $RACINE="." ; include( $RACINE."/pieddepage/bas.php" ) ; ?> <?php //Déconnection de la base de données. mysql_close(); ?>
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
24 juil. 2006 à 13:24
24 juil. 2006 à 13:24
Bon, j'avoue ne pas avoir eu le courage de regarder la source de près ...
Par contre, quelques erreurs aperçues par ci par la :
- redéfinir $RACINE à chaque fois ne sert à rien, une fois que tu l'a fait sur ta page, la variable est visible sur toute ta page.
- faire include reviens à dire au server de copier le fichier en question, et de coller tout son contenu à la place de "include". Donc si tu fais <BODY>Coucou ! <? include('Truc.php'); ?> </BODY> et que "Truc.php" contient <BODY> <? echo "Salut !"; ?>, au final le code de ta page une fois appellée sera <BODY> Coucou ! <BODY> Salut ! </BODY> Tu ne peux donc pas faire <? } ?> comme tu le fais, le navigateur ne comprend pas d'où vient cette accolade fermante.
Et si peux, mets juste la source concernée et je jetterai un oeil de près ;)
Par contre, quelques erreurs aperçues par ci par la :
- redéfinir $RACINE à chaque fois ne sert à rien, une fois que tu l'a fait sur ta page, la variable est visible sur toute ta page.
- faire include reviens à dire au server de copier le fichier en question, et de coller tout son contenu à la place de "include". Donc si tu fais <BODY>Coucou ! <? include('Truc.php'); ?> </BODY> et que "Truc.php" contient <BODY> <? echo "Salut !"; ?>, au final le code de ta page une fois appellée sera <BODY> Coucou ! <BODY> Salut ! </BODY> Tu ne peux donc pas faire <? } ?> comme tu le fais, le navigateur ne comprend pas d'où vient cette accolade fermante.
Et si peux, mets juste la source concernée et je jetterai un oeil de près ;)
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
25 juil. 2006 à 09:16
25 juil. 2006 à 09:16
Hum, le code m'a l'air correct mais en tout cas tu ne peux pas faire } dans ton fichier include ou ton header ...
Concernant ma deuxième explication, c'était pour t'expliquer qu'en fait PHP va juste foutre tout le code source sans réfléchir la où tu lui a dit de le mettre, c'est un copier/coller brut du fichier. Donc faut faire un minimum attention, ça peut être dangeureux dans certains cas.
Bref, ce qu'il faut faire :
1) Ne PAS mettre de header autre part qu'avant toute ligne de code HTML/PHP
2) Ne PAS définir polusieurs fois la même variable (surtout si c'est pour lui affecter la même valeur)
3) Mettre include à la place de ton header, ça devrait passer ;)
Concernant ma deuxième explication, c'était pour t'expliquer qu'en fait PHP va juste foutre tout le code source sans réfléchir la où tu lui a dit de le mettre, c'est un copier/coller brut du fichier. Donc faut faire un minimum attention, ça peut être dangeureux dans certains cas.
Bref, ce qu'il faut faire :
1) Ne PAS mettre de header autre part qu'avant toute ligne de code HTML/PHP
2) Ne PAS définir polusieurs fois la même variable (surtout si c'est pour lui affecter la même valeur)
3) Mettre include à la place de ton header, ça devrait passer ;)
maxime_B
Messages postés
788
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
15 juin 2010
55
25 juil. 2006 à 19:58
25 juil. 2006 à 19:58
ok merci
en fait ce que j'ai fait, je me demandait si c'était possible de rediriger les headers avec "$RACINE" et oui ça fonctionne. Merci pour ton aide.
j'ai bien pensé utiliser ta méthode, maiscomme la page ou on devait être redirigé contenait aussi des session_start, je ne sais pas si ça aurait fonctionné...
a+
en fait ce que j'ai fait, je me demandait si c'était possible de rediriger les headers avec "$RACINE" et oui ça fonctionne. Merci pour ton aide.
j'ai bien pensé utiliser ta méthode, maiscomme la page ou on devait être redirigé contenait aussi des session_start, je ne sais pas si ça aurait fonctionné...
a+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Darshu
Messages postés
303
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
3 avril 2008
64
26 juil. 2006 à 09:44
26 juil. 2006 à 09:44
Oui tu peux avec header(), ça sert entre autres à ça. Quand au session_start() ce n'est pas du tout un problème, puis que justement il faut mettre session_start() dans toutes tes pages :)
Enfin si j'ai pu t'aider, tant mieux.
Enfin si j'ai pu t'aider, tant mieux.