Pages :
(reprise du message précédent)

Hello JENCAL,

$_SESSION['pseudo'] = $_POST['pseudo'] AND header('location: chatbox.php'); 
Normalement, ça veux dire "enregistre la session "pseudo et va sur la page chatbox (comme indiqué dans le commentaire) Smiley hum

Pour le 1er code, heu oui, Oups ça devrait être isset Smiley lol ...je test j'ai rectifié, mais ça change rien Smiley confus
je sais plus quoi faire Smiley decu snif...
$_SESSION['pseudo'] = $_POST['pseudo'] AND header('location: chatbox.php'); 

C'est bien la première fois que je vois ça Smiley rofl


Je dois être dans le tord à faire ainsi:
$_SESSION['pseudo'] = $_POST['pseudo'];
header('location: chatbox.php');
Smiley cligne
Greg_Lumiere a écrit :
$_SESSION['pseudo'] = $_POST['pseudo'] AND header('location: chatbox.php'); 

C'est bien la première fois que je vois ça Smiley rofl


Je dois être dans le tord à faire ainsi:
$_SESSION['pseudo'] = $_POST['pseudo'];
header('location: chatbox.php');
Smiley cligne


Mr Greg_lumiere, bonjour,
C'est pas bien de se moquer des débutants...j'éssaie d'apprendre, et dans tous les cas ça fonctionne puisque je l'utilise sur ma page de password, d'ailleurs essaie là, tu verras, d'ailleurs j'ai essayé de faire comme toi et en faite quand tu tape l'adresse (localhost/monsite/test.php) ça met directement l'adresse de la page cible (http://localhost/monsite/accueilchatbox.php) donc ma méthode est pas si idiote que ça ^^
Bonjour (enfin on saura ça ce soir),

Détendez-vous, un petit peu d'humour histoire de dédramatiser votre problème ne devrait que ruisseler sur vous Smiley cligne )

Sérieusement, un opérateur "AND" en dehors d'une condition c'est pour moi du jamais vu.

J'ai plus l'habitude à une construction de ce type
if (condition1 AND condition2) { execute command; }


Enfin, si tout fonctionnait comme sur des roulettes, vous n'auriez probablement pas posté de sujet ici, non ?


Pour en revenir à votre problème de base, j'ai la sensation que vous vous êtes perdus dans vos conditionnelles. Peut-être, et ne voyez là point de moquerie mais juste un avis, que dis-je un ressenti, devriez-vous reposer à plat vos conditions et les exécutions liées à ces conditions.
Vous mettez votre cheminement noir sur blanc en langage courant que vous transposerez ensuite en Php.

Parfois en repartant de rien on va plus loin. Smiley cligne
Modérateur
Greg_Lumiere a écrit :

Je dois être dans le tord à faire ainsi:

Ce n'est pas la même chose, l'équivalent serait:

if ($_SESSION['pseudo'] = $_POST['pseudo']) {
  header('location: chatbox.php');
}

Ou plus détaillé:


$_SESSION['pseudo'] = $_POST['pseudo'];
if ($_SESSION['pseudo']) {
  header('location: chatbox.php');
}
Greg_Lumiere, ne vous inquiète pas, je l'ai pris sur le ton de l'humour ^^

sinon, JENCAL, j'ai un peu changer le code, donc il me créer la session quand on remplie le formulaire, par contre lorsque qu'on valide sans entré un pseudo, il n'y a pas de message d'erreur et une page blanche puis quand on actualise la page, elle reste blanche, il faut supprimer les sessions via la fermeture du navigateur web, ensuite quand tu ré ouvre la page le formulaire reviens vu que l'on as plus la session. Qu'est ce que je peut faire pour avoir le message d'erreur...voici le code:

if (isset($_POST['pseudo']))//* si il y as une variable pseudo, enregistré le pseudo et allez sur la page chatbox
             
            {
                $_SESSION['pseudo'] = $_POST['pseudo'] AND header('location: chatbox.php');            
            }     
         elseif (empty($_SESSION['pseudo'])) //"si" il n'y as pas de session pseudo
            {  
        ?>  
            <p>Bienvenue sur la page d'accueil de la ChatBox, pour entrer dans la ChatBox, vous devez insérer un pseudo qui seras conservé temporairement tout le temps de votre visite, il s'effacera lors de la fermeture
            complète des pages que vous avez visités sur ce site.</p>       
            <p>La TchatBox est encore en phase de test, mais fonctionnelle, des modifications seront à venir lors de la création d'espace membre.</p>             
            <p>Pour votre information, votre pseudo ne doit pas comporter de caractères spéciaux, merci.</p>        
            <p>Insérez votre pseudo choisi:</p>         
            <form action="accueilchatbox.php" method="post">         
            <p><input type="text" name="pseudo" id="pseudo"  title="Les caractères spéciaux ne sont pas autorisé, merci"  />
            <input type="submit" value="Envoyer" /></p>                    
            </form>
 
        <?php  
            }              
        else if (empty($_SESSION['pseudo']) AND (empty($_POST['pseudo'])))  //"sinon si" il n'y as pas de session pseudo et que le formulaire n'a pas été soumis
            {
                echo 'Vous n\'avez pas inséré de pseudo veuillez recommencer, merci';
            }

Sur la page "chatbox" j'ai mis
<?php
 
    echo 'Bonjour' .' ' .$_SESSION['pseudo']; 
        var_dump($_SESSION)
?>

La réponse avec un pseudo rentré dans la zone de texte:
Bonjour ricem
 
C:\wamp64\www\monsite\chatbox.php:19:
array (size=1)
  'pseudo' => string 'ricem' (length=5)

Et sans pseudo rentré dans la zone de texte:
Bonjour
 
C:\wamp64\www\monsite\chatbox.php:19:
array (size=1)
  'pseudo' => string '' (length=0)

Apparemment, il le prend comme pseudo...Alors que c'est vide doù le length=0
Après, tu as fait un erreur dans l'algo de tes IF. Je m'explique :

ton dernier elseif
else if (empty($_SESSION['pseudo']) AND (empty($_POST['pseudo']))) 

Ne pourras JAMAIS s’exécuter, car le second elseif
elseif (empty($_SESSION['pseudo']))

Vérifie également si $_SESSION['pseudo'] est vide. Donc si il est vide il rentre direct dans le second IF et non le dernier.
Si tu veux suivre la logique il faut mettre le dernier IF à la place du second.
Car on va tester si la session est vide mais avec le AND on test aussi si le pseudo est vide. Si les deux conditions sont respecter alors on rentre, sinon si c'est uniquement le pseudo vide alors on passe au dernier.
Et que penseriez-vous de ce qui suit ?
<?php
  if (empty($_SESSION['pseudo']) && !empty($_POST['pseudo'])) {/* [1] */
    $_SESSION['pseudo'] = $_POST['pseudo'];
  }
  if (!empty($_SESSION['pseudo']) || !empty($_POST['pseudo'])) {/* [2] */
    header('location: chatbox.php');
    exit;
  } else {/* [3] */
?>  
    <p>Bienvenue sur la page d'accueil de la ChatBox, pour entrer dans la ChatBox, vous devez insérer un pseudo qui seras conservé temporairement tout le temps de votre visite, il s'effacera lors de la fermeture
    complète des pages que vous avez visités sur ce site.</p>       
    <p>La TchatBox est encore en phase de test, mais fonctionnelle, des modifications seront à venir lors de la création d'espace membre.</p>             
    <p>Pour votre information, votre pseudo ne doit pas comporter de caractères spéciaux, merci.</p>        
    <p>Insérez votre pseudo choisi:</p>         
    <form action="accueilchatbox.php" method="post">         
    <p><input type="text" name="pseudo" id="pseudo"  title="Les caractères spéciaux ne sont pas autorisé, merci" required/><!-- [4] -->
    <input type="submit" value="Envoyer" /></p>                    
    </form>
<?php  
  }
?>

[1] : Le formulaire a été validé pour la première fois au cours de la session. On créée la variable SESSION qui contiendra le pseudonyme.
[2] : Que ce soit la première ou la énième fois qu'on arrive sur le formulaire on est redirigé vers la page de chat car $_SESSION['pseudo'] et/ou $_POST['pseudo'] existe et est ni vide ni nulle.
[3] : Rien en $_POST, rien en $_SESSION, on affiche le formulaire de connexion.
[4] : Champs obligatoire donc on ne peut valider un champs vide.
Voici un code qui fonctionne, merci à tous pour votre aide:

<?php
        #Si $_POST['pseudo'] est set.
        if (isset($_POST['pseudo']))
        {
            #On l'enregistre dans une session.
            $_SESSION['pseudo'] = $_POST['pseudo'];          
        } 
          
        #Si $_SESSION['pseudo'] est vide et que $_POST['pseudo'] est set c'est forcement que ton membre n'a pas remplis le formulaire.
        if ((empty($_SESSION['pseudo'])) AND (isset($_POST['pseudo'])))
        {
            echo 'Vous n\'avez pas inséré de pseudo veuillez recommencer, merci de cliquer sur le bouton "Retour" pour revenir à la page d\'accueil
            <span style="margin-left: 10px;"> <a href="accueilchatbox.php"> <input class="form2" type="button" name="retour" value="Retour"></a></p>';
        }
          
        #Sinon, si la $_SESSION['pseudo'] est vide, ce qui signifie que ton membre n'est pas encore enregistré (n'as pas encore set le $_POST['pseudo']).
        else if (empty($_SESSION['pseudo'])) 
        { 
            echo '<p>Bienvenue sur la page d\'accueil de la ChatBox, pour entrer dans la ChatBox, vous devez insérer un pseudo qui seras conservé temporairement tout le temps de votre visite,
            il s\'effacera lors de la fermeture complète des pages que vous avez visités sur ce site.</p>
            <p>La TchatBox est encore en phase de test, mais fonctionnelle, des modifications seront à venir lors de la création d\'espace membre.</p>
            <p>Pour votre information, votre pseudo ne doit pas comporter de caractères spéciaux, merci.</p>
            <p>Insérez votre pseudo choisi:</p>  
            <form action="accueilchatbox.php" method="post">       
            <p><input type="text" name="pseudo" id="pseudo"  title="Les caractères spéciaux ne sont pas autorisé, merci"  />
            <input type="submit" value="Envoyer" /></p>                  
            </form>';
        }
          
        #Sinon (si $_SESSION['pseudo'] remplis) on lui affiche la page pour les membres connectés.
        else
        {
            header('location: chatbox.php' );
        }
    ?>   

Modifié par ricem (07 Feb 2018 - 20:48)
Merci Christele,
Je vais lire ton tuto avec grande attention.
il se peut que je revienne te harceler de question Smiley smile Smiley biggrin Smiley lol ...!
ricem a écrit :
Merci Christele,
Je vais lire ton tuto avec grande attention.
il se peut que je revienne te harceler de question Smiley smile Smiley biggrin Smiley lol ...!

Aucun probléme !! Smiley cligne
Pages :