garder une Session

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 : garder une Session

par Truc » 15 oct. 2006, 20:32

oui je m'en doutais un peu...
Mais
Ajuste le reste du script... par exemple la requête n'est plus obligatoire si la variable de session existe.

re

par younes371 » 15 oct. 2006, 19:49

T as raison,
mais pour $login et $password, je les ai stocke ds $_SESSION, car ils vont me servir dans la requette

select count(*) .... where login=$login et motpasse=$password.
tu me comprend mnt?

par Truc » 15 oct. 2006, 19:19

En principe on ne place pas de mot de passe en session.
Le passe ne doit servir qu'a l'identification.

reponse

par younes371 » 15 oct. 2006, 19:15

Merci bcp pour ton aide,
ça marche mais j'ai ajouté d autres ligne :

Code : Tout sélectionner

<?php session_start(); if (!empty($_POST['login'])) { $login=$_POST['login']; $password=$_POST['password']; } else { $login=$_SESSION['login']; $password=$_SESSION['password']; }
et en bas dans le okAdmin :

Code : Tout sélectionner

$_SESSION['login'] = $login; $_SESSION['password'] = $password;
[/code]

par Truc » 15 oct. 2006, 18:31

C'est à cause de ce 1er test :
if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) )
Lorsque tu changes de page les variables POST n'exisent plus tu te retrouves donc à chaque fois dans le "else".

modifie le script en y ajoutant une condition sur l'existence de la variable de session.
if ( (isset($_POST) && !empty($_POST['login']) && !empty($_POST['password'])) || isset($_SESSION['login']))
Ajuste le reste du script... par exemple la requête n'est plus obligatoire si la variable de session existe.

script complet

par younes371 » 15 oct. 2006, 16:58

Bon voilà mon script complet pour bien comprendre :
<?php
session_start(); 

if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) )
{

include ("connexion.php");
$login=$_POST['login'];
$password=$_POST['password'];


$identification = "SELECT COUNT(*) FROM `admin` where login='".$login."' and motpasse='".$password."'"; 
$req_id = mysql_query($identification) or die (mysql_error ()); 


if (mysql_result ($req_id, 0) == 0) 
{
?>
<h3><font color="#FF0000">Login ou mot de passe invalide </font> 
<a href="idAdmin.php">Retour</a></h3>
<?php

}
else
{
$_SESSION['login'] = $login;

if ( isset ($_SESSION['login']) ) {
$nom = $_SESSION['login'].' est le nom de la session';
 }
else {
$nom = "mais votre nom a été effacé";
}

/* Paramètres de pagination */ 
$nb_nouv_par_page = 2;             /* Nombre de nouvelles qui seront affichées sur chaque page */ 
$url = "./admin.php?page="; 

/* On détermine quelle est la page qui est actuellement affichée */ 
$page_en_cours    = isset($_GET['page']) ? $_GET['page'] : 0; 
$page_affichee    = ($page_en_cours + 1); 

/* Requête pour compter les nouvelles présentes dans notre base de données */ 
$sql_nb = "SELECT COUNT(*) FROM `bien` "; 

/* Exécution de la requête et récupération du résultat */ 
$resultat_1 = mysql_query($sql_nb); 
$nb_nouvelles = mysql_result($resultat_1, 0); 

/* Calcul du nombre total de pages : on arrondit à l'entier supérieur (ceil() ) */ 
$nb_pages = ceil($nb_nouvelles / $nb_nouv_par_page); 

if($nb_pages > 0) 
{ 
    /* On définit une variable qui contiendra les données de navigation */ 
    $barre_nav = ""; 
    /* Nous avons au moins une page : avons nous besoin d'une barre de navigation ? */ 
    if($nb_pages > 1) 
    { 
	        if($page_en_cours > 0) 
        { 
		   for($i = 0; $i < $page_en_cours; $i++) 
            { 
                $p = $i + 1; 
                $barre_nav .= "<a href=\"". $url . $i ."\" title=\"page ". $p ."\">". $p ."</a> | "; 
            } 
        } 
		
        $barre_nav .= "<strong>". $page_affichee ."</strong>"; 
        /* Enfin on affiche (s'il y a lieu) les liens vers les pages suivantes */ 
        if(($page_affichee) < $nb_pages) 
        { 
            /* Il reste encore d'autres pages à afficher */ 
            $nb_suivantes = $nb_pages - ($page_affichee); 
            for($j = ($page_affichee); $j < $nb_pages; $j++) 
            {   
				$p = $j + 1; 
                $barre_nav .= " | <a href=\"". $url . $j ."\" title=\"page ". $p ."\">". $p ."</a>"; 
            } 
        } 
         
        /* On peut définir en plus la situation dans une autre variable à afficher ailleurs */ 
        $page_affichee = "Page ". $page_affichee ." sur un total de ". $nb_pages ." pages."; 
    } 
    else 
    { 
        /* Nous n'avons qu'une seule page, on peut se contenter d'afficher juste page 1/1 */ 
        $barre_nav .= "page 1/1"; 
    } 
	
    $debut = $page_en_cours * $nb_nouv_par_page; 
	$sql_n = "SELECT num, etat, typeb, surface, ville,prix,com,img_nom FROM bien LIMIT ". $debut .", ". $nb_nouv_par_page .";"; 
    $nouvelles = mysql_query($sql_n) or die (mysql_error ()); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" /> 
<title>Administration</title> 
<script language="javascript">
function ouvre_popup(url) {
popup=window.open(url,"nom_popup","menubar=no, status=no, scrollbars=no, menubar=no, width=400, height=300");
}
// Si la popup n'est pas la fenêtre active, on met le focus dessus pour qu'elle s'affiche en avant-plan
if (self.focus) {
popup.focus();
}
</script>




<style type="text/css"> 
/* <![CDATA[ */  
body { 
    color: #000; 
    background-color: #efefef; 
    font-family: verdana, helvetica, sans-serif; 
    font-size: 80% !important; 
} 
p.situation { 
    text-align: right; 
    padding: 1em; 
} 
p.navigation { 
    text-align: center; 
    font-size: 0.85em; 
    text-decoration: underline; 
} 
p.date_nouv { 
    float: right; 
    font-size: 0.85em; 
} 
/* ]]> */ 
</style> 
</head> 
<body> 
<p class="situation"><?php echo($page_affichee); ?></p> 
<table border=1 bordercolor="#CCCCCC"align="center">
<tr bgcolor="#666666" >
<td  width="100"><FONT  color="#FFFFFF">Numero :</FONT></td>
</tr>
<?php 
    while($nouv = mysql_fetch_assoc($nouvelles)) 
    { 
?> 

<tr bgcolor="#CCCCCC" bordercolor="#0099CC">
<td><?php echo($nouv['num']); ?></td>
</tr>
<?php
}
?>
</table>
    <?php 
	
	/* on libère la mémoire */ 
    mysql_free_result($resultat_1); 
    mysql_free_result($nouvelles); 
?> 
<p class="navigation"><?php echo($barre_nav); ?></p> 
<?php 
} 
else 
{ 
    /**  
    Nous n'avons aucune page, on peut alors afficher un message autre  
    sans devoir nous préoccuper de la navigation 
     */ 
?> 
<h3>Aucun bien n'a encore été ajouté</h3> 
<hr /> 
<?php 
} 
}
}

else
{

?>
<h3><font color="#FF0000">Veuillez saisir le Login et le mot de passe </font>
<a href="idAdmin.php">Retour</a></h3>
<?php
}
?> 
</body> 
</html> 

Merci a vous tous[/code]

reponse

par younes371 » 15 oct. 2006, 16:52

Cyrano,
Dsl,
Normalement, j'utilise ton script d'affichage page par page.
J'ai lis pa mals de tutoriaux, mais y a pas une explication exacte qui a une relation avec ce genre de script ?page=1, ?page=2 ..
SVP, si vous avez une une solution pour mon probleme n'hesiter pas de me le dire,
je ve que lorsque l'administrateur se logue, sa session sera enregistré pour toutes les pages, dans mon cas, l'admin visite seulement la 1ere page, apres , il reçoit le message de login ou mot de passe vide ...
Merci

Re: reponse

par Cyrano » 13 oct. 2006, 08:03

dsl ,
mais c ça ta reponse !
Non, sa réponse est un avertissement de modération, la lecture des règles du forum n'est pas facultative. On est tous disposés à aider ceux qui le demandent à condition que chacun y mette un peu du sien.

Quant à ta question, est-ce qu'il ne manquerait pas un session_start() quelque part ?

reponse

par younes371 » 13 oct. 2006, 01:07

dsl ,
mais c ça ta reponse !

par Truc » 12 oct. 2006, 23:08

Modération : Pas de questions dans la FAQ !!
c'est pourtant écrit
Et pense à utiliser les balises
 pour encadrer le code
[/color]

garder une Session

par younes371 » 12 oct. 2006, 22:38

Bonjour,
moi j'ai un script qui affiche des données sur plusieurs page,
<?php
session_start();
if (isset($_POST['login'])) {
$login= $_POST['login'];
$_SESSION['login'] = $login;
}

?>
, mais il ne m'affiche que la 1ere page, (j'ai un système comme celui de skyblog 1|2|3|4|... ).
comment faire pour garder la trace de la session pour l administrateur dans les autres page admin.php?page=2, admin.php?page=3,.... ?
. ds la page admin.php j ai ce script :
if($page_en_cours > 0)
{
for($i = 0; $i < $page_en_cours; $i++)
{
$p = $i + 1;
$barre_nav .= "<a href=\"". $url . $i ."\" title=\"page ". $p ."\">". $p ."</a> | ";
}
}

Merci d'avance