[RESOLU] Afficher COOKIE directement

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 : [RESOLU] Afficher COOKIE directement

Re: Afficher COOKIE directement

par FranckyNow » 04 juil. 2016, 14:43

Merci beaucoup pour ta réponse moogli j'ai graçe à toi compris mes erreurs :)

Bonne journée :)

Re: Afficher COOKIE directement

par moogli » 04 juil. 2016, 13:33

salut,

tu as pas mal de chose redondante dans ton code.
tu commences pas if(!empty($_POST['nom']) tu sais donc que l'index existe dans $_POST et qu'il n'est pas vide. => pas besoin de rajouter les isset($_POST['nom'])
ensuite le second if c'est le else du premier (tu t'en rends mieux compte si tu vire les isset($_POST['nom'] inutile).
du coup tu ne set le cookie que si $_POST['stend'] existe.

a priori ton code pourrait se réduire à ceci
if (!empty($_POST['nom'])) {
    $_SESSION['nom'] = $_POST['nom'];
    if (isset($_POST['stend'])) {
        echo 'tu as oublié ton prénom :)';
        setcookie('nom', $_POST['nom'], time() + 365 * 24 * 3600, null, null, false, true);
    }
    header('location: suite.php');
} else {
    echo 'tu as oublié ton prénom :)';
}
ceci dit "stend" ce n'est pas parlant et je ne sais pas a quoi cela sert.
au vu du code je comprend que tu souhaite mettre en cookie le nom et cela tu le fait si l'info est dans le formulaire.

Pour le coté logique de la chose, il est inutile de mettre le nom en cookie et en session (je sais que cela est a but didactique mais quand même ;) ).

Dernière chose : tu n'as pas besoin de passer par des variables intermédiaire, cela n'aide pas forcément à la compréhension et au pire encombre la mémoire pour rien ;)


@+

Re: Afficher COOKIE directement

par FranckyNow » 04 juil. 2016, 12:20

Donc ces à dire que je dois faire :
<?php

session_start();

if (!empty($_POST['nom'])) {

	if (isset($_POST['nom']) && !isset($_POST['stend'])) {
		$_SESSION['nom'] = $_POST['nom'];
	}else {
		echo "tu as oublié ton prénom :)";
	}

	if (isset($_POST['stend']) && isset($_POST['nom'])) {
		setcookie('nom', $_POST['nom'], time() + 365*24*3600, null, null, false, true); 
		$contenu_cookie = $_POST['nom'];

		$_SESSION['nom'] = $contenu_cookie;
	}

	header('location: suite.php');
}else {
	echo "FAUX!";
}

?>
Quelque chose comme ça non ?

Je te remercie de ta réponse :)

Re: Afficher COOKIE directement

par @rthur » 03 juil. 2016, 23:59

Bonjour,

C'est normal, la fonction setcookie() demande la création d'un cookie qui sera visible _au prochain chargement de la page_
http://php.net/manual/en/function.setcookie.php

Si tu veux afficher directement le contenu, utilise une variable suite à ton setcookie en lui affectant la valeur que tu as mise dans ton cookie.

Afficher COOKIE directement

par FranckyNow » 03 juil. 2016, 23:31

Bonjour,

je m’entraîne avec les COOKIE et les SESSIONS et je n'arrive pas à faire en sorte d'afficher directement un COOKIE, après sa création (qu-on est pas besoin de retourner sur la page précédente et de revenir en avant).

Mes codes sont les suivants :

index.php
<?php

if (isset($_COOKIE['nom'])) {
	header('location: suite.php');
}

else
{
	echo '
<html>
<head>
	<link rel="stylesheet" type="text/css" href="Connexion.css" />
	<meta charset="utf-8" />
	<title>tests</title>
</head>

<body>

<p>Comment t\'appel tu ?</p>

<form action="traitement.php" method="POST">

	<input type="text" name="nom" placeholder="prénom"><br><br>

	<label class="checkbox"><input type="checkbox" name="stend"> stend-connected</label><br><br><br>

	<input type="submit">

</form>

</body>
</html>';
}

?>

traitement.php
<?php

session_start();

if (!empty($_POST['nom'])) {

	if (isset($_POST['nom']) && !isset($_POST['stend'])) {
		$_SESSION['nom'] = $_POST['nom'];
	}else {
		echo "tu as oublié ton prénom :)";
	}

	if (isset($_POST['stend']) && isset($_POST['nom'])) {
		setcookie('nom', $_POST['nom'], time() + 365*24*3600, null, null, false, true); 

		$_SESSION['nom'] = $_COOKIE['nom'];
	}

	header('location: suite.php');
}else {
	echo "FAUX!";
}

?>

suite.php
<?php

session_start();

echo "salut " . $_SESSION['nom'] . "<br><br>";

echo 'Bouton déconnexion : <a href="deco.php"><input type="submit" value="déconnexion"></a>';

?>

deco.php
<?php

session_start();
session_destroy();
setcookie('nom', $_POST['nom'], time(), null, null, false, true); 

header('location: index.php');

?>
Auriez vous une idée ?

Je vous remerci d'avance :)