par
Ryle » 24 janv. 2008, 12:29
Alors déjà une chose méga super hyper supra importante : l'indentation du code. L'indentation, c'est le décalage du code à chaque nouvelle structure (if, for, while, etc.) qui te permet de voir en un coup d'oeil ce sur quoi elle porte
if (empty($_POST['utilisateur']) or empty($_POST['pass'])) {
header("location:accueil.html");
echo"vous devez vous logger";
}
else {
....
}
Autre chose importante, les opérateur "OR" et "||" ne sont pas rigoureusement identique (la différence étant dans leur ordre de priorité). Si en sql tu ne peux utiliser que "OR", en php, à moins de savoir précisément ce que tu attends, je te recommande d'utiliser "||" pour l'opérateur OU (idem pour "&&" et "AND"

)
if (empty($_POST['utilisateur']) || empty($_POST['pass']))
Concernant le header(), pour que celui-ci fonctionne correctement, il ne faut absolument pas envoyer d'infos au navigateur au préalable. Donc pas de echo, pas de code html, pas le moindre espace en dehors des balises <?php ... ?>, et pas non plus de retour à la ligne :
Au lieu de :
<?php session_start() ?>
<?php
//renvois utilisateur ver page acceuil si pas logger
if (...)
Fais simplement
<?php session_start();
//renvois utilisateur ver page acceuil si pas logger
if (...)
Il n'est pas non plus utile d'afficher un message ensuite, puisque le navigateur effectuera une redirection, l'utilisateur ne le verra pas
Enfin, concernant ton problème, mysql_query() ne retourne FAUX qu'en qu'à d'erreur d'exécution. Dans tous les autres cas, que la requête ait retournée une valeur ou pas (ce qui n'est pas une erreur, juste le fait qu'il n'y a pas de résultat), le résultat sera une Ressource qu'il te faudra ensuite parcourir (avec les fonctions mysql_fetch_assoc(), mysql_fetch_object(), ... ) pour savoir si oui ou non elle contient des enregistrements

Tu peux aussi utiliser mysql_num_rows() pour savoir combien d'enregistrement ont été retournés
<?php session_start();
//renvois utilisateur ver page acceuil si pas logger
if (empty($_POST['utilisateur']) || empty($_POST['pass'])) {
header("location:accueil.html");
exit(); // ce exit indique qu'il n'est pas utile d'exécuter la suite du code
}
else{
echo "champ remplis<br>";
//recuperation de var email (id utilisateur) pour la session complete
$_SESSION['email'] = $_POST['utilisateur'];
//connexion base de donnee fetetout//
require_once('Connections/conexion_bd_fetetout.php');
// verification de l'utilisateur si il est enregistré
$requete= "SELECT email FROM coordonnees WHERE email='$_SESSION[email]'" ;
//envois requete
$resultat=mysql_query($requete,$BD_membre)or die ("Requete invalide");
echo"<br>var session utilisateur : ".$_SESSION['email'];
if (mysql_num_rows($resultat) > 0){
echo"<br>l'utilisateur existe";
}
else {
echo "<br>l'utilisateur n'existe pas";
}
}//fin else condition remplissage champ
?>
Alors déjà une chose méga super hyper supra importante : l'indentation du code. L'indentation, c'est le décalage du code à chaque nouvelle structure (if, for, while, etc.) qui te permet de voir en un coup d'oeil ce sur quoi elle porte :)
[php]if (empty($_POST['utilisateur']) or empty($_POST['pass'])) {
header("location:accueil.html");
echo"vous devez vous logger";
}
else {
....
}[/php]
Autre chose importante, les opérateur "OR" et "||" ne sont pas rigoureusement identique (la différence étant dans leur ordre de priorité). Si en sql tu ne peux utiliser que "OR", en php, à moins de savoir précisément ce que tu attends, je te recommande d'utiliser "||" pour l'opérateur OU (idem pour "&&" et "AND" :))
[php]if (empty($_POST['utilisateur']) || empty($_POST['pass'])) [/php]
Concernant le header(), pour que celui-ci fonctionne correctement, il ne faut absolument pas envoyer d'infos au navigateur au préalable. Donc pas de echo, pas de code html, pas le moindre espace en dehors des balises <?php ... ?>, et pas non plus de retour à la ligne :
Au lieu de : [php]<?php session_start() ?>
<?php
//renvois utilisateur ver page acceuil si pas logger
if (...)[/php]Fais simplement [php]<?php session_start();
//renvois utilisateur ver page acceuil si pas logger
if (...)[/php]Il n'est pas non plus utile d'afficher un message ensuite, puisque le navigateur effectuera une redirection, l'utilisateur ne le verra pas :)
Enfin, concernant ton problème, mysql_query() ne retourne FAUX qu'en qu'à d'erreur d'exécution. Dans tous les autres cas, que la requête ait retournée une valeur ou pas (ce qui n'est pas une erreur, juste le fait qu'il n'y a pas de résultat), le résultat sera une Ressource qu'il te faudra ensuite parcourir (avec les fonctions mysql_fetch_assoc(), mysql_fetch_object(), ... ) pour savoir si oui ou non elle contient des enregistrements :) Tu peux aussi utiliser mysql_num_rows() pour savoir combien d'enregistrement ont été retournés :)
[php]<?php session_start();
//renvois utilisateur ver page acceuil si pas logger
if (empty($_POST['utilisateur']) || empty($_POST['pass'])) {
header("location:accueil.html");
exit(); // ce exit indique qu'il n'est pas utile d'exécuter la suite du code
}
else{
echo "champ remplis<br>";
//recuperation de var email (id utilisateur) pour la session complete
$_SESSION['email'] = $_POST['utilisateur'];
//connexion base de donnee fetetout//
require_once('Connections/conexion_bd_fetetout.php');
// verification de l'utilisateur si il est enregistré
$requete= "SELECT email FROM coordonnees WHERE email='$_SESSION[email]'" ;
//envois requete
$resultat=mysql_query($requete,$BD_membre)or die ("Requete invalide");
echo"<br>var session utilisateur : ".$_SESSION['email'];
if (mysql_num_rows($resultat) > 0){
echo"<br>l'utilisateur existe";
}
else {
echo "<br>l'utilisateur n'existe pas";
}
}//fin else condition remplissage champ
?> [/php]