Jump to content
Sign in to follow this  
opanis

ovh et les sessions php

Rate this topic

Recommended Posts

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

Share this post


Link to post
Share on other sites

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 :

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 :(

Share this post


Link to post
Share on other sites

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);
}
?>

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...