Faire jouer une identification sur d'autres pages....

Mammouth du PHP | 959 Messages

09 mai 2007, 15:23

Bonjour,

il y a 3 pages dont une html
index.html :

Code : Tout sélectionner

<form action="sectionmembre_acces.php" method="post"> Identifiant: <input type="text" name="id" maxlength="32"/> <br/> Mot de passe: <input type="password" name="motdepasse" maxlength="16"/> <br /> <input type="submit" value="Se connecter"/> </form>
_____
sectionmembre_acces.php :

Code : Tout sélectionner

<?php // Script faisant appel aux sessions session_start(); // Paramètres de connexion à la base de données $BD_serveur = "localhost"; $BD_utilisateur = "my_login"; $BD_motDePasse = "my_pass"; $BD_base = "my_base"; $id = $_POST["id"]; $motDePasse = $_POST["motdepasse"]; @mysql_pconnect($BD_serveur, $BD_utilisateur, $BD_motDePasse) or die("Impossible de se connecter au serveur de bases de données."); @mysql_select_db($BD_base) or die("Impossible de se connecter à la base de données."); $requete = "SELECT * FROM table_utilisateurs ". " WHERE id='$id' AND motdepasse='$motDePasse'"; $result = @mysql_query($requete); if ($enreg = @mysql_fetch_array($result)) { // Si une ligne a été trouvée c'est que le couple // (identifant, mot de passe) est valide $_SESSION["membre"] = TRUE; $_SESSION["membreid"] = $id; header("Location: acces.php"); die(); } else { $_SESSION["membre"] = FALSE; header("Location: index.html"); die(); } ?>
____
acces.php

Code : Tout sélectionner

<html> <head> </head> <body> <div align="center"><strong>Choisissez votre destination....</strong></div> <p>&nbsp;</p> <div align="center" style="font-style:blob; font-size:18px"> ............. </p> </div> </body> </html>

Voilà, se que je voudrait faire mais je ne suis pas arrivé, c'est que quand on s'identifie, sa va sur la page "acces.php" , mais le problème, c'est qui si on tapa directement "/acces.php" dans l'url (donc sans passer par l'identification) sa marche quand même ! moi, je voudrait que quand on passe directement par "acces.php" sa nous redirectionne directement vers / , c'est à dire, index.html

J'ai tout essayé, :
mettre
<?php
session_start();
?>
et/ou
<?php
require('sectionmembre_acces.php');
?>
dans acces.php : rein ne marche....

Essayer de faire passer en GET au lieu de POST

etc.. etc....

J'espère que vous pourez y faire quelque chose !
Merci !
Modifié en dernier par chrislabricole le 09 mai 2007, 15:27, modifié 2 fois.

ViPHP
ViPHP | 2291 Messages

09 mai 2007, 15:26

Salut,

Un truc du genre peut-être :?:
session_start();
if (!isset($_SESSION['membre'])) {

header ('Location: index.php');
    exit();

}
Donc si pas membre de $_SESSION redirection vers index.php
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Mammouth du PHP | 959 Messages

09 mai 2007, 17:58

voila se qu'il se passe :

- Si j'entre dans la page acces.php en entrant les identifiants :
= Redirection imédiate vers la page d'accueil

- Si j'entre inconito en y accèdant direct :
= Ce code d'erreur :
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/149/sdb/0/0/mon_compte_free/images/acces.php:1) in /mnt/149/sdb/0/0/mon_compte_free/images/acces.php on line 2
la ligne 2 est celle si :
session_start();
Merci d'votre aide ! :wink: :)

PS: J'ai créé le fameux dossier "sessions" ... , rien de plus...

Mammouth du PHP | 693 Messages

09 mai 2007, 18:01

TU es sur qu'il n'y as pas d'espace qui c'est intercalé entre le début et le <?php ?

Mammouth du PHP | 959 Messages

09 mai 2007, 18:05

Je m'en rappele plus

je viens de réassayer, même chose....

ViPHP
ViPHP | 2291 Messages

09 mai 2007, 18:27

Je m'en rappele plus

je viens de réassayer, même chose....
la redirection vers index c'est comment ?
index.php ou ../../index.php ?
Parce que acces.php est dans ton dossier images ton index est ou lui ?
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Mammouth du PHP | 959 Messages

09 mai 2007, 18:33

oui oui

l'arbre: (+dossiers) (-fichiers)
..
+ images
- index.html
- sectionmembre_acces.php
- acces.php

ViPHP
ViPHP | 2291 Messages

09 mai 2007, 18:35

oui oui

l'arbre: (+dossiers) (-fichiers)
..
+ images
- index.html
- sectionmembre_acces.php
- acces.php
Montre tout le code se sera plus simple
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

lem
Eléphant du PHP | 108 Messages

09 mai 2007, 18:46

index.html est dans le dossier images, mais index.php ??
Lem.

ViPHP
ViPHP | 2291 Messages

09 mai 2007, 18:49

index.html est dans le dossier images, mais index.php ??
Et tu a fait quoi ceci
session_start(); 
if (!isset($_SESSION['membre'])) { 

header ('Location: index.php'); 
    exit(); 

} 
ou ceci
session_start(); 
if (!isset($_SESSION['membre'])) { 

header ('Location: index.html'); 
    exit(); 

} 
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Mammouth du PHP | 959 Messages

09 mai 2007, 19:05

dans acces.php , j'ai mi ceci :
<?php 
session_start();
if (!isset($_SESSION['membre'])) { 

header ('Location: index.html'); 
    exit(); 

}
?>
en m'assurant qu'il n'y est pas d'espaces(s) intercalés...

Merci !
PS : A mon avis, le fichier sectionmembre_acces.php doit y être pour quelque chose.... nan ?

ViPHP
ViPHP | 2291 Messages

09 mai 2007, 19:19

Et comme ceci ,
<?php
       // Paramètres de connexion à la base de données
    $BD_serveur     = "localhost";
    $BD_utilisateur = "my_login";
    $BD_motDePasse  = "my_pass";
    $BD_base        = "my_base";

    $id         = $_POST["id"];
    $motDePasse = $_POST["motdepasse"];

    mysql_pconnect($BD_serveur, $BD_utilisateur, $BD_motDePasse)
        or die("Impossible de se connecter au serveur de bases de données.");
    mysql_select_db($BD_base)
        or die("Impossible de se connecter à la base de données.");

    $requete = "SELECT * FROM table_utilisateurs  WHERE id='".$id."' AND motdepasse='".$motDePasse."'";

    $result = mysql_query($requete);

    if ($enreg = mysql_fetch_array($result)) {
    	session_start();
        // Si une ligne a été trouvée c'est que le couple
        // (identifant, mot de passe) est valide
        $_SESSION["membre"] = TRUE;
        $_SESSION["membreid"] = $id;
        header("Location: acces.php");
        die();
    } else {
        $_SESSION["membre"] = FALSE;
        header("Location: index.html");
        die();
    }
?>
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Mammouth du PHP | 959 Messages

09 mai 2007, 19:50

Sa marche pas avec les bon identifiants, sa "recharge" le page à cause du :
header("Location: index.html"); 

lem
Eléphant du PHP | 108 Messages

09 mai 2007, 19:55

Mets des traces pour voir les valeurs de $id et de $motDePasse.
Vérifie que cela correspond bien à ce que tu as dans ta base.
Mets des traces dans le if et dans le else pour être sûr qu'il passe dans le else.
Lem.

ViPHP
ViPHP | 2291 Messages

09 mai 2007, 19:58

$_SESSION["membreid"] = $id; 
cela ne devrais pas être ceci ?
$id = $_SESSION["membreid"]; 

ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.