opanis Posté 20 Août 2005 Auteur Posté 20 Août 2005 j'envoie les donnés (login et mot de passe) par une page html qui ouvre par la méthode post la page authentification dont le code est page connexion.html : <form name="form1" method="post" action="authentification.php"> page authentification <?php session_start(); $dureeSession="15"; require("config.inc.php");$connexion = connex_base($hote, $login_base, $pwd, $base); // Login et mot de passe en provenance de connexion.html $login = $_POST['login']; $pwd = $_POST['pwd']; #Fonction de verification du login/mdp function verif_auth($login, $pwd, $connexion ) { $query = "select idp from user "; $query .= "where login='" . $login . "' "; $query .= "and pass = md5('".$pwd."')"; $result = mysql_query($query); $nb = mysql_num_rows( $result); return $nb; } function session_vide( $connexion ) { // la table sessions est vide? $query = "SELECT * from session"; $result = mysql_query($query, $connexion); $nb=mysql_num_rows( $result); return $nb;}function en_cours( $login, $connexion ) { $id=session_id(); $query = "SELECT * from session WHERE id_session='$id' "; $query .= "AND clos='N' AND login='$login' "; $query .= "AND now() BETWEEN debut AND fin "; $result = mysql_query($query, $connexion); $nb=mysql_num_rows($result); return $nb;}function clos_anc_session( $connexion ) { $query = "SELECT id_session, debut from session WHERE clos='N' AND now() > fin "; $result = mysql_query($query, $connexion); $nb=mysql_num_rows($result); while ($ligne=mysql_fetch_array($result) ) { $query_clos = "UPDATE session SET clos='O'"; $query_clos .= "WHERE id_session='$ligne[id_session]' AND debut='$ligne[debut]'"; mysql_query($query_clos, $connexion); } return $nb;}function nouv_session( $login, $connexion, $dureeSession) { $id=session_id(); $query = "INSERT INTO session (login, debut, id_session, fin) "; $query .= "VALUES ('$login', now(), '$id', DATE_ADD(now(),INTERVAL ".$dureeSession." MINUTE) )"; $result = mysql_query($query, $connexion); return $result;}/* Programme principal */ $n = clos_anc_session( $connexion ); if( verif_auth( $login, $pwd, $connexion ) == 1 ){ $sessvide = session_vide($connexion); $sessactive = en_cours( $login, $connexion ); if( $sessactive == 0 or $sessvide == 0 ){ $ok = nouv_session( $login, $connexion, $dureeSession); if( $ok ){ header("Location: gestion/admin.php?".SID); } } if( $sessactive > 0 ){ header("Location: gestion/admin.php?".SID); } } else{ //echo "Erreur lors de l'authentification"; header( "Location: erreur.htm"); }?> Page entete.inc.php <?require_once( "../config.inc.php" );$connexion = connex_base( $hote, $login_base, $pwd, $base );function valid_session($session, $connexion) { $id = session_id(); $query = "SELECT debut from session WHERE id_session='$id' AND clos='N' AND now() BETWEEN debut AND fin"; $result = mysql_query($query, $connexion); $nb = mysql_num_rows($result); if ( $nb>0 ) { $ligne = mysql_fetch_array($result); return $ligne[debut]; } else{ return 0;}}function maj_session( $debut, $connexion,$dureeSession ) { $id=session_id(); $query ="UPDATE session SET fin = DATE_ADD(now(), interval ".$dureeSession." minute)"; $query .="WHERE id_session= '$id' "; $query .="AND clos='N' AND debut = '$debut'"; mysql_query($query, $connexion); $result=mysql_query("select fin FROM session WHERE id_session= '$id' AND debut = '$debut' "); $ligne= mysql_fetch_array($result); return $ligne[fin];}/* Programme pricipal */$debut = valid_session( $session, $connexion );if ( $debut == 0 ) { header("location: erreur.htm");}else { $fin = maj_session($debut, $connexion, $dureeSession);}?> Il m'affiche tjs l'erreur : Warning: Cannot modify header information - headers already sent by (output started at /home.2/www/gestion/admin2.php:15) in /home.2/www/gestion/entete.inc.php on line 29 Merci
Anonymus Posté 20 Août 2005 Posté 20 Août 2005 in /home.2/www/gestion/entete.inc.php on line 29 ca correspondrait à la ligne : header("location: erreur.htm"); Préfères lui ce code : header("Location: http://DOMAINE.COM/REPERTOIRE/erreur.htm"); l'entète 'location' préfère les adresses absolues. Donc, sur cette ligne, il envoie des infos pour le 'header'. Or, des informations ont déjà été envoyées en ligne : output started at /home.2/www/gestion/admin2.php:15 Il nous faudrait donc le code de la page 'admin2.php', jusqu'en ligne 20, pour y voir plus clair ps : Pour le tag html ci dessus, ca m'apprendra à ne pas relire ce que j'écris
opanis Posté 20 Août 2005 Auteur Posté 20 Août 2005 Rebonjour à tous, Je voudrais vous dire un grand merci à tous, vu qu'en effet je n'ai plus d'erreur php j'ai juste un dernier pb ( qui est un gros meme) En effet lorsque je me connecte via un formulaire la bonne page s'ouvre (une page non sécurisé avec des cadres protégés eux il me met ma page erreur.htm qui m'indique que cette page est inconnu le pb viens de la page suivante mé je sais pas pourquoi il ne veut pas me donner accés a la page <?require_once( "../config.inc.php" );$connexion = connex_base( $hote, $login_base, $pwd, $base );function valid_session($session, $connexion) { $id = session_id(); $query = "SELECT debut from session WHERE id_session='$id' AND clos='N' AND now() BETWEEN debut AND fin"; $result = mysql_query($query, $connexion); $nb = mysql_num_rows($result); if ( $nb>0 ) { $ligne = mysql_fetch_array($result); return $ligne[debut]; } else{ return 0;}}function maj_session( $debut, $connexion,$dureeSession ) { $id=session_id(); $query ="UPDATE session SET fin = DATE_ADD(now(), interval ".$dureeSession." minute)"; $query .="WHERE id_session= '$id' "; $query .="AND clos='N' AND debut = '$debut'"; mysql_query($query, $connexion); $result=mysql_query("select fin FROM session WHERE id_session= '$id' AND debut = '$debut' "); $ligne= mysql_fetch_array($result); return $ligne[fin];}/* Programme pricipal */$[B]debut = valid_session( $session, $connexion );if ( $debut == 0 ) { header("location: erreur.htm");}[/B]else { $fin = maj_session($debut, $connexion, $dureeSession);}?>
opanis Posté 22 Août 2005 Auteur Posté 22 Août 2005 Personne n'aurait donc d'idée pour me dire pourquoi cela ne marche pas ????
petit-ourson Posté 22 Août 2005 Posté 22 Août 2005 Personnellement (ça ne va pas faire avancer la chose), j'ai un peu décroché du sujet, je crois qu'on a fait le tour des erreurs possibles que tu étais susceptible de rencontrer.
opanis Posté 22 Août 2005 Auteur Posté 22 Août 2005 L'erreur est que j'ai c'est que mes pages que normalement j'ai accés que par un code ne sont jamais accésible, ce n'est pas une erreur signaler par l'exploirateur Lorsque je me connecte avec mon code j'ai bien l'ouverture d'une page non protéger composé de cadre qui m'indique donc que le code est bon, la session s'ouvre bien dans la base de données mais au lieu de m'affiché la page voulu, il m'affiche une page erreur comme quoi cette page est inconnue. Le code contenu dans chaque page protéger est : <?php require("entete.inc.php");?> Et le code de la page entete.inc.php est <?require_once( "../config.inc.php" );$connexion = connex_base( $hote, $login_base, $pwd, $base );function valid_session($session, $connexion) { $id = session_id(); $query = "SELECT debut from session WHERE id_session='$id' AND clos='N' AND now() BETWEEN debut AND fin"; $result = mysql_query($query, $connexion); $nb = mysql_num_rows($result); if ( $nb>0 ) { $ligne = mysql_fetch_array($result); return $ligne[debut]; } else{ return 0;}}function maj_session( $debut, $connexion,$dureeSession ) { $id=session_id(); $query ="UPDATE session SET fin = DATE_ADD(now(), interval ".$dureeSession." minute)"; $query .="WHERE id_session= '$id' "; $query .="AND clos='N' AND debut = '$debut'"; mysql_query($query, $connexion); $result=mysql_query("select fin FROM session WHERE id_session= '$id' AND debut = '$debut' "); $ligne= mysql_fetch_array($result); return $ligne[fin];}/* Programme pricipal */$debut = valid_session( $session, $connexion );if ( $debut == 0 ) { header("location: erreur.htm");}else { $fin = maj_session($debut, $connexion, $dureeSession);}?> Pour ma part je pencherais vers une erreur vers la ligne if ( $debut == 0 ) { mais je ne la trouve pas Quelqu'un pourrais-til me dire si il y a une erreur car il marche bien en local mais pas sur ovh
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant