IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

demarré une session après un formulaire.


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 66
    Points : 50
    Points
    50
    Par défaut demarré une session après un formulaire.
    bonsoir , voila en quelques mot j'ai un formulaire pour un inscription qui fonctionne bien, mais malgré session start () la session botte en touche ! car lors de la première requête dans ma base la personne qui s'inscrit n'est pas dedans, donc mon interrogation est la suivante est-ce qu'il faut que je relance une nouvelle requête SQL ?

    mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <?php
    session_start();
    unset( $_SESSION['login'] );
    include "config.php";
     
    //verification des champ du formulaire
    if ((isset($_POST['nom']) && !empty($_POST['nom']))
    	&& (isset($_POST['prenom']) && !empty($_POST['prenom']))
    	&& (isset($_POST['mail']) && !empty($_POST['mail']))
    	&& (isset($_POST['identifiant']) && !empty($_POST['identifiant']))
    	&& (isset($_POST['pass']) && !empty($_POST['pass']))
    	&& (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))
    	&& (isset($_POST['departement']) && !empty($_POST['departement']))
    	&& (isset($_POST['statut']) && !empty($_POST['statut'])))
    {	
    	$base = mysql_connect ($host, $user, $pass);
    	mysql_select_db ($dbname, $base); //connection a la base.
    	$sql = 'SELECT count(*) FROM test1 WHERE login="'.mysql_escape_string($_POST['identifiant']).'"';
    	$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     	$data = mysql_fetch_array($req);     
    }
    //si identifiant non present enregistrement des données dans la base
    if ($data[0] == 0){
    	$sql = 'INSERT INTO test1 VALUES("",
    		"'.mysql_escape_string($_POST['nom']).'",
    		"'.mysql_escape_string($_POST['prenom']).'",
    		"'.mysql_escape_string($_POST['mail']).'",
    		"'.mysql_escape_string($_POST['identifiant']).'",
    		"'.mysql_escape_string(md5($_POST['pass'])).'",
    		"'.mysql_escape_string($_POST['departement']).'",
    		"'.mysql_escape_string($_POST['statut']).'")'; 
            mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
    //envoi du mail vers le client
    	$to = $_POST['mail'];
    	$subject = "votre inscription sur attelage-astuce";
    	$message =
    		"Bonjour et bienvenu sur http://www.attelage-astuce.com \n vous pouvez maintenant acceder aux notices de montage 
    		\n \n votre identifiant est : ".$_POST['identifiant']." \n et votre mot de passe est : ".$_POST['pass']." 
    		\n merci de ne pas repondre a; ce mail, celui-ci vous a ete adresse automatiquement\n\n cordialement le webmaster.";
    	$from = "inscription@attelage-astuce.com";
    	$headers = "From: $from";
    	mail($to,$subject,$message,$headers);
    //envoi du message vers le webmaster
    	$to = "inscription@attelage-astuce.com";
    	$subject = "nouvelle inscription attelage-astuce";
    	$message =
    		"Nom : " . $_POST['nom'] . "\r\n" . "prenom : " . $_POST['prenom'] . "\r\n" .
    		"Adresse mail : " . $_POST['mail'] . "\r\n" .
    		"\r\n" .
    		"identifiant : " . $_POST['identifiant']."\r\n" .
    		"mot de passe : " . $_POST['pass'];
    	$from = $_POST['mail'];
    	$headers = "From: $from";
    	mail($to,$subject,$message,$headers);
    //démarrage de la session et retour vers la page d'accueil 
    }
    $_SESSION['login']=$data['prenom'];			// on sauvegarde la session !
    $login = $_SESSION['login'];
    header('Location: index1.php'); //redirection vers l'accueil membre.
    exit;
    ?>
    merci d'avance pour vos conseils

    cedcyr

    en fait ce que je chercher a faire assez maladroitement exprimer au par avant c'est que si l'inscription c'est bien passé la personne soit directement orienté vers sa session (index1) sans avoir a repasser par ma page index et mon formulaire d'identification.

    merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Qu'obtiens-tu avec ton code actuel ?

    Au passage, tu peux retirer tes isset() au début.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 66
    Points : 50
    Points
    50
    Par défaut j'ai trouvé !
    avant ma modif je repartais sur index du fait que la varriable session était vide puisque data = 0
    donc je viens de modifier comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            $_SESSION['login']=$data['prenom'];
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            $_SESSION['login']=$_POST['prenom'];
    effectivement comme cela ca marche mais je me pose encore une petite question comment écrire la condition session start seulement si INSERT INTO c'est bien passé ?

    et j'ai enlever tous les isset() merci au passage sabotage

    je continue a chercher et vos lumière sont les bien venue.

    cedcyr

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    session_start() tu le mets bien où tu veux, après une condition au milieu de ton code si tu veux. La seule obligation c'est que tu dois le déclarer avant d'utiliser une variable de session (création, modification, suppression, test ou comparaison de variables de session)

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['login']=$_POST['prenom'];
    N'oublie jamais de considérer ton code sous un aspect de sécurité : si j'envoi sur ton page un "prenom" déjà existant, ton code valide ma session sans rien avoir contrôlé.

    mysql_affected_rows() te permet de savoir s'il y a eu une insertion ou non.
    l'enregistrement en session doit bien sur être dans la condition d'insertion ; actuellement il est en dehors.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 66
    Points : 50
    Points
    50
    Par défaut suite
    merci sabotage, j'ai donc modifié mon code comme suit et cela fonctionne au poil !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (mysql_affected_rows()){
            $_SESSION['login']=$_POST['prenom'];			// on sauvegarde la session !
    		$login = $_SESSION['login'];
            header('Location: index1.php'); //redirection vers l'accueil membre.
            exit;
    		}}
    	else {
    		header('Location: index.php');
    		}
    si je peut abusé un peut car cela fait un petit moment que j'essai sans résultat probant je souhaiterai mettre une alerte dans mon formulaire si l'identifiant est déjà utilisé dans ma base le problème (que je ne métrise pas) est que mon formulaire est dans une lightbox et donc quand je quitte ma page index pour aller vers le traitement de ma page (inscription), si cela ce passe mal je revient donc vers index mais ma lightbox est fermée et l'utilisateur doit recliquer sur le bouton inscription pour relancer le formulaire. php peut bien entendu me le rouvrir mais je n'est trouver aucun tuto a ce sujet. maintenant je me pose la question si pour des question de convivialité je n'est pas intérêt a fournir un arway sql a un script et faire la vérification coté client au fur et a mesure de la saisi mais dans ce cas coté sécu c'est zéro.

    dans l'attente de suggestion éventuel merci

    cedcyr

    PS : pour visualisé la bête http://www.test.attelage-astuce.com le bouton inscription.

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    On t'a déjà repondu sur ce problème dans d'autres discussions

    Au passage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $login = $_SESSION['login'];
    ne sert à rien puisque tu fais une redirection juste après.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 66
    Points : 50
    Points
    50
    Par défaut je sais que j'ai déja abordé le sujet !
    en effet mais j'arrive a mettre une alerte dans ma page ou dans une fenêtre sj mais pas dans mon formulaire est fermer quand je revient dans ma page, et je cherchai a mettre cette info pour que l'utilisateur sache que l'inscription avais échoué suie a un mauvais identifiant.

    c'est pour cela que j'abordai la question. il faut dire qu'avec php je plante un peut sur le déclanchement d'évènements, juste un tuto sur se sujet me suffirais . car avec js c'est simple tu fait onclick, onfocus etc... et c'a marche mais avec php ?

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/09/2010, 16h37
  2. Charger une page après envoi formulaire
    Par JeanMi66 dans le forum Langage
    Réponses: 5
    Dernier message: 05/03/2010, 07h49
  3. Perte de valeur de session après 2e formulaire
    Par jbrasselet dans le forum Langage
    Réponses: 3
    Dernier message: 12/08/2009, 15h32
  4. Réponses: 11
    Dernier message: 21/02/2008, 02h47
  5. [Sécurité] demarrer une session
    Par bullrot dans le forum Langage
    Réponses: 2
    Dernier message: 19/12/2005, 12h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo