Problème Inscription/connexion

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 : Problème Inscription/connexion

par Junior5 » 13 mai 2009, 15:57

@Junior5:

J'ai vu que le chemin de ton fichier php était affiché, à savoir file:///C:/Users...Inferis/Newh.php,
ce qui m'amène à te poser la question suivante :

Qu'utilises-tu pour exécuter ton code php ? WAMP, EasyPHP, ...?

Parce que si tu n'utilises qu'un simple navigateur pour exécuter tes scripts php, ça peut expliquer
par mal de choses, notamment pourquoi ton script ne fonctionnera pas de toute façon.
2 seconde je remet mon Corrigé et sache Gior que tu m'as éclairé un peu j'oublie à chaque fois que PHP ne peut être lu par le simple nav , mais qu'il faut passer par Wamp.

UP pour dire que c'est résolu , merci à ceux qui ont pris la peine :wink:

par AB » 13 mai 2009, 15:39

remontre-nous ton code corrigé.

par Junior5 » 13 mai 2009, 15:31

j'utilise Wamp ; malgrès les modif de AB toujours pareil :cry: ( le dernier recours serait de faire un de A à Z ....)

par GiorgioLino » 13 mai 2009, 15:17

@Junior5:

J'ai vu que le chemin de ton fichier php était affiché, à savoir file:///C:/Users...Inferis/Newh.php,
ce qui m'amène à te poser la question suivante :

Qu'utilises-tu pour exécuter ton code php ? WAMP, EasyPHP, ...?

Parce que si tu n'utilises qu'un simple navigateur pour exécuter tes scripts php, ça peut expliquer
par mal de choses, notamment pourquoi ton script ne fonctionnera pas de toute façon.

par AB » 13 mai 2009, 14:20

Arf ... t'a mélangé le sript de connexion avec la protection des pages visibles après connexion.

Dans le script du tuto de connexion le code est :
                /* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['login']
                 qui donne au visiteur la possibilité de se connecter.  */
                 session_start();
                 $_SESSION['login'] = $pseudo;
            
                 // A MODIFIER Remplacer le '#' par l'adresse de votre page de destination, sinon ce lien indique la page actuelle.
                $message = 'Votre inscription est enregistrée. <a href = "mambolo.html">Connexion</a>'; 
et toi tu fais
                 /* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['login']
                 qui donne au visiteur la possibilité de se connecter.  */
                 session_start(); 
              if(!isset($_SESSION['login'])) {die('Vous devez être enregistré pour accéder à cette partie du site');} 
            
                 
                 $message = 'Votre inscription est enregistrée. <a href = "mambolo.html" >Connexion</a>'; 
à corriger donc.

Si tu veux que tes pages soient visibles uniquement pour les visiteurs enregistrés il faut protéger ces pages en mettant le code
session_start(); 
              if(!isset($_SESSION['login'])) {die('Vous devez être enregistré pour accéder à cette partie du site');} 
au début de chacune d'entre elles.
Donc ta page mambolo.html devrait se nommer mambolo.php et inclure ce bout de code en haut de page dans la partie php (une page avec l'extension 'html' n'interprète pas le php et ne sera pas protégée).

par Junior5 » 13 mai 2009, 13:47

Oui , j'ai modifié ceci mais toujours un problème ( le même visiblement ) si c'est un problème de quote je vis pas d'où sa peut venir :cry:

par AB » 13 mai 2009, 13:16

Si tu regarde le tuto, la ligne que tu mentionne est
$message = 'Votre inscription est enregistrée. <a href = "#">Cliquez ici pour vous connecter</a>'; 
Pour l'adapter à ton cas il suffit de faire
$message = 'Votre inscription est enregistrée. <a href = "mambolo.html">Connexion</a>'; 
Alors c'est résolu ?

par zeus » 13 mai 2009, 12:37

Je voulais juste profiter de l'occasion pour te montrer les différentes causes d'erreur, et il se trouve que, dans ton cas, c'était juste la seconde ;)

par Junior5 » 13 mai 2009, 12:29

Bon déja j'ai le code en rajoutant les ' comme tu me l'as indiquer.
Bon ensuite j'essaye de voir pour les problèmes d'ouverture mais bon je m'y perd un peu dans tout ce code >.< :oops:

par zeus » 13 mai 2009, 12:02

Si tu regardes ce qui apparait à l'écran, tu peux te rendre compte que du code PHP est affiché à l'écran.
Plusieurs choses peuvent expliquer cela :
- la présence de short open tag (<? à la place de <?php)
- un problème dans l'ouverture/fermeture de quote lors d'affichage.

Dans ton cas, quand je prend cette ligne :
$message = 'Votre inscription est enregistrée'. <a href = "mambolo.html" >Connexion</a>;
on peut se rendre compte que la colloration syntaxique nous montre qu'il y a un soucis. En effet, le lien <a> devrait se trouver dans la chaine à afficher.
$message = 'Votre inscription est enregistrée'. '<a href = "mambolo.html" >Connexion</a>';

par Junior5 » 13 mai 2009, 11:53

Voila édité :wink:

par zeus » 13 mai 2009, 11:48

Il aurait fallu que tu laisses les liens sur tes images, parce que là, on ne peut rien lire du tout ;)

Problème Inscription/connexion

par Junior5 » 13 mai 2009, 11:46

Bonjour voila j'ai commencé le PHP/MySql récemment , voila j'ai décider de faire un système de connexion/inscription en suivant le tuto de AB jusque la pas de problème.

Mais voila lorsque je m'inscrit

http://www.casimages.com/img.php?i=0905 ... 851887.jpg

je clique sur valider et j'obtiens ceci :
http://www.casimages.com/img.php?i=0905 ... 385062.jpg

Voila merci à ceux qui m'aideront , pourtant je suis sur de savoir ou est l'erreur mais à force de trop vouloir faire je vois plus ce que sa peut être
:?

Mon code php est le suivant ( remarque ceci est celui de AB dans la partie tuto )
<?php
// Indique le bon format des entêtes (par défaut apache risque de les envoyer au standard ISO-8859-1)
header('Content-type: text/html; charset=UTF-8');

/* Création d'une fonction - utilisée dans la récupération des variables - qui teste la configuration get_magic_quotes_gpc du serveur.
Si oui, supprime avec la fonction stripslashes les antislashes "\" insérés dans les chaines de caractère des variables gpc (GET, POST, COOKIE) */
function Verif_magicquotes ($chaine) 
{
if (get_magic_quotes_gpc()) $chaine = stripslashes($chaine);

return $chaine;
} 

// Initialisation du message de réponse
$message = null;


// Si le formulaire est envoyé
if (isset($_POST['pseudo'])) 
{

    /* Récupération des variables issues du formulaire
    Teste l'existence les données post en vérifiant qu'elles existent, qu'elles sont non vides et non composées uniquement d'espaces.
    (Ce dernier point est facultatif et l'on pourrait se passer d'utiliser la fonction trim())
    En cas de succès, on applique notre fonction Verif_magicquotes pour (éventuellement) nettoyer la variable */
    $pseudo = (isset($_POST['pseudo']) && trim($_POST['pseudo']) != '')? Verif_magicquotes($_POST['pseudo']) : null;
    $pass = (isset($_POST['pass']) && trim($_POST['pass']) != '')? Verif_magicquotes($_POST['pass']) : null;
    

    // Si $pseudo et $pass différents de null
    if(isset($pseudo,$pass)) 
    {
         /* Connexion au serveur : dans cet exemple, en local sur le serveur d'évaluation
         A MODIFIER avec vos valeurs */
         $hostname = "localhost";
         $database = "membres";
         $username = "root";
         $password = "";
    
         $connection = mysql_connect($hostname, $username, $password) or die(mysql_error());

         // Connexion à la base
         mysql_select_db($database, $connection);
    
         // Indique à mySql de travailler en UTF-8 (par défaut mySql risque de travailler au standard ISO-8859-1)
         mysql_query("SET NAMES 'utf8'");
    
         // Préparation des données pour les requêtes à l'aide de la fonction mysql_real_escape_string
         $nom = mysql_real_escape_string($pseudo);
         $password = mysql_real_escape_string($pass);
    
    
         // Requête pour compter le nombre d'enregistrements répondant à la clause : champ du pseudo de la table = pseudo posté dans le formulaire
         $requete = "SELECT count(*) as nb FROM membres WHERE pseudo = '".$nom."'";
    
         // Exécution de la requête
         $req_exec = mysql_query($requete) or die(mysql_error());
    
         // Création du tableau associatif du résultat
         $resultat = mysql_fetch_assoc($req_exec);
    

         // nb est le nom de l'allias associé à count(*) et retourne le résultat de la requête dans le tableau $resultat; 
         if ($resultat['nb'] == 0) 
         // Résultat du comptage = 0 pour ce pseudo, on peut donc l'enregistrer 
         {
             // Pour enregistrer la date actuelle (date/heure/minutes/secondes) on peut utiliser directement la fonction mysql : NOW()
             $insertion = "INSERT INTO membres(pseudo,pass,date_enregistrement) VALUES('".$nom."', '".$password."', NOW())";
         
             // Exécution de la requête d'insertion
             $inser_exec = mysql_query($insertion) or die(mysql_error());
        
             /* Si l'insertion s'est faite correctement (une requête d'insertion retourne "true" en cas de succès, je peux donc utiliser 
             l'opérateur de comparaison strict '==='  c.f. http://fr.php.net/manual/fr/language.operators.comparison.php) */
             if ($inser_exec === true) 
             {
                 /* Démarre la session et enregistre le pseudo dans la variable de session $_SESSION['login']
                 qui donne au visiteur la possibilité de se connecter.  */
                 session_start(); 
              if(!isset($_SESSION['login'])) {die('Vous devez être enregistré pour accéder à cette partie du site');} 
            
                 
                 $message = 'Votre inscription est enregistrée'. <a href = "mambolo.html" >Connexion</a>;
             }    
         }
         else
         {   // Le pseudo est déjà utilisé
             $message = 'Ce pseudo est déjà utilisé, changez-le.';
         }
    }
    else 
    {    // Au moins un des deux champs "pseudo" ou "mot de passe" n'a pas été rempli
         $message = 'Les champs "Pseudo" et "Mot de passe" doivent être remplis.';
    }
}
?>