Pages :
Bonjour, j’essaie de créer un tchat,, j'ai fait un page d'accueil pour insérer un pseudo, mais je n'arrive pas à mettre un message d'erreur au cas où la case serais vide.
voici mon code de la page d'accueil
<?php
if (!isset($_SESSION['pseudo'])) // "si" il n'y as pas de session pseudo
{          
?> 
    <p>Bienvenue sur la page d'accueil de la TchatBox, pour entrer dans la TchatBox, vous devez insérer un pseudo .</p> 
    <p>Insérez votre pseudo choisi:</p>     
    <form action="tchat_post.php" method="post">          
    <p><input type="text" name="pseudo" id="pseudo" /> <input type="submit" value="Envoyer" /></p>                     
    </form> 
<?php
}
elseif  (isset($_POST['pseudo']) OR isset($_SESSION['pseudo'])) 
{
    header('location: TchatBox.php' );  // "sinon si" aller sur la page TchatBox
} 
?>

et celle du tchat:
<form action="tchat_post.php" method="post">
            <p><input type="text" name="message" id="message" size="80" placeholder="Éditer votre message ici" /> <input type="submit" value="Envoyer" /></p>
            </form>         
        <?php   // Connexion à la base de données
        try
        {
            $bdd = new PDO('mysql:host=localhost;dbname=monsite;charset=utf8', 'root', '');            
        }
        catch(Exception $e)
        {
                die('Erreur : '.$e->getMessage());
        } 
        // Récupération des 18 derniers messages
        $reponse = $bdd->query('SELECT pseudo, message FROM tchat ORDER BY ID DESC LIMIT 0, 18'); 
        // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
        while ($donnees = $reponse->fetch())
        {
            echo '<p class="tchat"><strong>' . htmlspecialchars($donnees['pseudo']) . ':</strong>  <span class="message">' . htmlspecialchars($donnees['message']) . '</span></p>';
        } 
        $reponse->closeCursor();

et celle de l'envoi:
<?php
session_start();
if(!isset($_SESSION['pseudo'])){ $_SESSION['pseudo'] = $_POST['pseudo']; } 
// Connexion à la base de données
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=monsite;charset=utf8', 'root', '');
    array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
} 
// Insertion du message à l'aide d'une requête préparée
$req = $bdd->prepare('INSERT INTO tchat (pseudo, message) VALUES(?, ?)');
$req->execute(array($_SESSION['pseudo'], $_POST['message'])); 
// Redirection du visiteur vers la page du minichat
header('Location: Tchatbox.php');
?>

j'ai essayé un code que j'ai mis dans la page d'accueil après le "else", mais ça na fonctionne pas, voici le code:
 else (empty($_POST['pseudo']))  // si formulaire vide message d'erreur
        {
            echo '<p>Vous n\'avez pas inséré de pseudo veuillez recommencer, merci.</p>';
        }


Merci de votre aide Smiley biggrin
Salut Smiley smile

J'ai du mal à comprendre l'organisation de tes fichiers Smiley smile
Est ce que tu pourrais être plus explicite ??

Sinon au plus simple, juste
 if ($_POST["pseudo"] == "") 
ou
if(array_key_exists("pseudo", $_POST))

enfin il y a plein de méthode, sans oublier le html5 avec un required sur l'input du pseudo Smiley cligne
salut pchlj,
Comment t'expliquer heu Smiley rolleyes ...alors j'ai une page d'accueil (ou j'accueille le visiteur pour qu'il insère un pseudo) une fois inséré son pseudo, il est renvoyé sur une autre page (là où il y à le chat) et un autre bout de code (tchat_post) qui lui traite la liaison entre le tchat et la BDD.
j'espère avoir été clair dans mon explication Smiley lol
voici le code que j'ai utilisé
if (!isset($_SESSION['pseudo'])) // "si" il n'y as pas de session pseudo
        {          
        ?>     
            <p>Bienvenue sur la page d'accueil de la TchatBox, pour entrer dans la TchatBox, vous devez insérer un pseudo.</p>
            <p>Insérez votre pseudo choisi:</p>             
            <form action="minichat_post.php" method="post">          
            <p><input type="text" name="pseudo" id="pseudo" /> <input type="submit" value="Envoyer" /></p>                     
            </form> 
        <?php
        }
        elseif  (isset($_POST['pseudo']) OR isset($_SESSION['pseudo']))       
        {
            header('location: TchatBox.php' );  // "sinon si" aller sur la page TchatBox
        }         
        else (empty($_POST['pseudo']))  // si formulaire vide message d'erreur         
        {
            echo '<p>Vous n\'avez pas inséré de pseudo veuillez recommencer, merci.</p>';
        }         
        ?>

Voici l'erreur: Parse error: syntax error, unexpected '{' in

mais je vois pas où est l'erreur de syntaxe, la page affiche une erreur au niveau de "else" sur la syntaxe "{"

pourtant je pense bien avoir codé comme il faut Smiley decu
Et pourrait tu m'expliquer la méthode du html5 avec un required sur l'input.
Merci.
re, après quelques recherche, j'ai vu que sur un "else" on ne peux mettre de conditions derrière sauf si on mets un elseif, j'ai donc corrigé et je n'est plus d'erreur, mais la condition ne fonctionne toujours pas, il me mets pas le message d'erreur lorsque je valide sans pseudo.
Auriez vous une astuce. Merci.
Merci pchlj pour ta réponse, j'étais justement entrain de lire l'article que tu m'as mis en lien Smiley lol
par le biais d'une recherche sur notre "amis" GOOGLE ^^

D'ailleurs, je tiens à dire que c'est un très bon article.
Et merci énormément pour ton aide.
Modifié par ricem (26 Jan 2018 - 15:04)
Du coup, je vais utiliser, la méthode "required" et met en résolu.
Merci
Modifié par ricem (26 Jan 2018 - 15:15)
Edit:
Apparemment il faut quand même faire la vérification côté serveur car avec l'inspecteur du navigateur on peux modifier le code html (donc enlever le "required") à sa guise et de plus elle ne fonctionne pas avec les anciens navigateurs à ce que j'ai pus lire, donc pas très efficace, mais ça limite quand même pour les noobs Smiley murf
Alors si je peux relancer le sujet, car il me faut absolument un "elseif" au cas ou le visiteur ne remplie pas la zone de texte du pseudo.
Merci.

Après avoir essayé la méthode de "examiner l’élément" (clic droit, examiner l'élément sur firefox) dans le code source tu peut enlever le required et retourner sur la page et cliquer sur le bouton validé et il ne te mets plus le message et tu as accès au "chat" Mouais...pas encouragent tout ça Smiley ohwell .
Pourquoi ne pas le gérer en AJAX, si tu veux vraiment gérer cela dans du code serveur?

exemple :

Que je saisisse ou pas un pseudo, du javascript (ajax) va envoyer la valeur de l'input "pseudo" à une page php, cette page va checker si c'est vide ou pas et renvoyer un "1" ou "0".
Sinon avec ta solution actuel, c'est à dire avec le "required"
Tu peux empêcher l'inspection d’éléments, plus précisément tu bloque les touches :
Click droit
F12
Ctrl + Shift + I
Ctrl + Shift + J
Ctrl + U

 `<body oncontextmenu="return false;">`


 
document.onkeydown = function(e) {
 if(event.keyCode == 123) {
     return false;
  }
  if(e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0)) {
     return false;
  }
  if(e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0)) {
     return false;
  }
  if(e.ctrlKey && e.keyCode == 'U'.charCodeAt(0)) {
     return false;
  }
}

Modifié par JENCAL (26 Jan 2018 - 16:35)
Bonjour,
Et merci JENCAL de ta réponse, mais le but principale étais qu'il me mette un message d'erreur lorsque le visiteur ne remplis pas la zone de texte "pseudo" et tout ça si possible en PHP.
Donc si quelqu'un a une solution, il serait aimable de me la faire partager Smiley lol .
Bonjour,
mon problème n'est toujours pas résolu, car je tiens absolument partir sur une réponse en php...
JENCAL de même que si le visiteur désactive JavaScript dans son navigateur, les valeurs sont t'il envoyé (ou pas) Smiley eek
Merci de m’apporter votre aide, cela serrait très aimable à vous Smiley ravi Smiley biggrin .
Modifié par ricem (31 Jan 2018 - 09:20)
Non, si celui ci désactive javascript tu ne pourras pas faire de l'ajax. tu devras passer par des formulaire.
Bonjour,

J'ai brièvement survolé le sujet mais il me semble en avoir saisi l'essence. Néanmoins, rectifiez-moi si je me trompe.

Dans votre validation php vous utilisez une redirection vers la page de chat si tout est ok. Selon moi, la solution évidente est de faire de même en cas d'erreur de saisie.

Le schéma :
1 - L'utilisateur rempli le formulaire et l'envoi
2 - Réception et contrôle des données sur une page de validation (php)
Si tout est ok ==> on poursuis le processus en redirigeant le visiteur vers la page de chat.
Si erreur (champs manquant/invalide) ==> on supprime les données transmises, on envoi un cookie qui contient false sur le résultat de l'opération, on redirige le visiteur vers le formulaire, la page du formulaire teste si le cookie du résultat de l'opération renvoi false, on affiche un message au visiteur et on supprime le cookie précédemment utilisé.

Bref, un simple jeu de va et vient.


Vous vous souciez de l'utilisateur qui désactive JS et c'est tout à votre honneur. Néanmoins pour le confort des autres, rien ne vous empêche de doubler le dispositif.
C'est-à-dire que soit l'utilisateur a activé JS - ou plutôt n'a pas désactivé JS - auquel cas ce va et vient se fait en Ajax, permettant une information instantanée. Soit le cas inverse, à ce moment votre code php prend le relais de bout en bout.


Votre avis ?
Ha, j'oubliais... après une redirection en php n'oubliez surtout pas la commande exit ! Sans quoi le reste du code continue à être exécuté avant que la redirection soit effectuée.
Bonjour, Greg_Lumiere

Mon avis.....heurggg...!! Smiley langue

Il faut que j'analyse la situation ainsi que le code car contrairement à ton pseudo, moi, je suis pas une lumière Smiley biggrin (celle là étais trop facile), je reviens dans quelques jours ^^
Bonjour,

Je reviens à la charge Smiley lol tel un gros relou Smiley langue

J'ai donc retiré tout les codes SQL et tout ce qui concerne le chat, juste pour me concentré sur la partie session"pseudo" que je n'arrive pas à faire fonctionner,

il y as quelque temps j'ai fais une page d'index pour rentrer sur le site avec une session "password" et elle est fonctionnelle, j'ai essayé de reprendre à peu près le même principe pour la session"pseudo" voici le code de la page sous le nom "test"

<?php
        if (empty($_POST['password'])) // "si" post password est vide 
        {
		?>
			
			<p>Ici prochainement.... <b>"Mon site"</b></p>
			
			<p>Ce site est encore en phase de construction et de test, seules quelques personnes sont autorisées à y accéder afin d'évaluer et de donner des avis constructifs pour la suite du développement du site.</p>
			
			<p>Je vous invite à insérer le mot de passe qui vous a été fourni dans la zone de texte ci-dessous et de cliquer sur le bouton "valider"</p>
		
        <form action="test.php" method="post">
			<p>
				<input class="form" type="password" name="password" />
				<input class="form2" type="submit" value="Valider" />
			</p>
        </form>
						
			
		<?php
        }
		elseif (isset($_POST['password']) AND $_POST['password'] !=  'kangou') // "sinon si" il y a un MP et que il est différent de (kangou) 
		{
        ?>
                 
        <p>Vous n'avez pas inséré le bon mot de passe, veuillez retenter une nouvelle fois, merci. </p>                
		
		<p>Pour les personnes qui seraient intéressées, je vous suggère de revenir voir dans quelque temps, le site sera mis en accès libre lorsqu'il sera totalement fonctionnel.</p>
		
		<p><span class="retrait"> Merci de votre compréhension.</span> </p>
		
		<p>Cliquer sur le bouton "Retour" pour revenir à la page d'accueil <span style="margin-left: 10px;"> <a href="test.php"> <input class="form2" type="button" name="retour" value="Retour"></a></p>
                 
        <?php
                 
        }
				
		else $_SESSION['password'] = $_POST['password'] AND header('location: accueilchatbox.php' ); // "sinon" créer une session password et aller sur la page accueil 
					
		{                    
		}
        ?>         

Voilà ce que faisait la page, elle affichait le formulaire et rappelais la même page
https://imgur.com/mOftD7l
Et en cas de réponse négative vu qu'elle rappelais la même page, voilà ce qu'elle affichait:
https://imgur.com/McJzjtm
voilà elle affichait une réponse négative avec un bouton pour renvoyer sur le formulaire( en faite elle réactualise la page), vous pouvez remarquer que cette page s’appelle elle même, et que dans la barre d'adresse c'est toujours la même adresse (vous suivez ça va, j'embrouille personne :-°)

Donc j'essaie de faire pareille avec la session pseudo mais en vain, voici le code que j'utilise

	
		<?php
		 if (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 '<p>Vous n\'avez pas inséré de pseudo veuillez recommencer, merci.</p>';
			}
				
		else if (empty($_POST['pseudo']))//* sinon 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'); 			
			}
	
		
		?>

Mais il se passe rien, que je mette ou pas un pseudo, quand je clique sur envoyer ça reviens sur le formulaire, pourriez vous m'aider car ça fait plus de 3 semaines que je suis dessus.

Merci
Modifié par ricem (05 Feb 2018 - 12:38)
si il se passe rien cest que $_SESSION['pseudo'] est vide !

En plus tu dis :
else if (empty($_POST['pseudo']))//* sinon si il y as une variable pseudo, enregistré le pseudo et allez sur la page chatbox

C'est moi où ton commentaire indique l'inverse de ce que le IF propose ??


et j'ai pas compris ta ligne :
$_SESSION['pseudo'] = $_POST['pseudo'] AND header('location: chatbox.php'); 

surtout le AND header('location: chatbox.php');
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...
Pages :