从php表单获取cookie值

时间:2011-06-29 03:37:54

标签: php forms cookies

我将cookie值和名称设置为用户可以在表单中输入的值?我用什么来在我的第二页上显示该值? (我不能不为此使用cookies,所以虽然可能有更聪明的方法来做到这一点,但我想知道如何使用cookies !!)谢谢!

<?php
setcookie($color, 'color');
setcookie($name, 'name');
?>

<?php
echo "<form action=\"form_data.php\" method=\"post\">";
echo "favorite color:<input type=\"text\" name=\"color\" size=\"20\"><br/>";
echo "name:<input type=\"text\" name=\"name\" size=\"20\"><br/>";
echo "<input type=\"submit\" value=\"Submit\" />";
echo "<br /><input type=\"hidden\" name=\"submitted\" value=\"true\" />";
?>

form_data上的数据:

  <?php
  echo "<b>fav color:</b>".$_COOKIE['color'];
  echo "<b>name:</b>".$_COOKIE['name'];
  ?>

4 个答案:

答案 0 :(得分:5)

首先,您有表格:

<?php
echo "<form action=\"form_data.php\" method=\"post\">";
echo "favorite color:<input type=\"text\" name=\"color\" size=\"20\"><br/>";
echo "name:<input type=\"text\" name=\"name\" size=\"20\"><br/>";
echo "<input type=\"submit\" value=\"Submit\" />";
echo "<br /><input type=\"hidden\" name=\"submitted\" value=\"true\" />";
?>

然后在form_data.php中:

<?php
// set the cookie with the submitted user data
setcookie('color',$_POST['color']);
setcookie('name', $_POST['name']);
echo "<b>fav color:</b>".$_COOKIE['color'];
echo "<b>name:</b>".$_COOKIE['name'];
?>

但是,您会注意到$ _COOKIE变量尚不可用...如果您重新加载该页面,它们将会出现。

为了适应cookie的这种行为,您可以在form_data.php中设置重定向:

<?php 
 if (!empty($_POST)) {
  // set the cookie with the submitted user data
  setcookie('color',$_POST['color']);
  setcookie('name', $_POST['name']);
  // redirect the user to final landing page so cookie info is available
  header("Location:form_data.php");
 } else {
  echo "<b>fav color:</b>".$_COOKIE['color'];
  echo "<b>name:</b>".$_COOKIE['name'];
 }
?>

您可以将它们重定向到任何合适的位置。希望这有帮助,祝你好运!

答案 1 :(得分:2)

你的问题的功能setcookie失败了。 setcookie($ name,$ value);

例: setcookie('color','red');

echo $ _COOKIE ['color']; // outout:red

答案 2 :(得分:0)

我不知道您为什么要使用cookies.as我知道您可以使用会话传递用户的信息,如下所示: 这是为我工作的完整示例

<?php
session_start();
if(array_key_exists('sub',$_POST))
$_SESSION['name']=$_POST['name'];
?>
<html>
<form  method="post">
<input type='text' name="name">
<input type='submit' name='sub' value='send my info'>
</html>

在另一页中只使用这个:

<?php
session_start();
$r=$_SESSION['name'];
echo $r;
?>

记得调用session_start();在您希望使用会话的每个页面上

答案 3 :(得分:0)

任何人都可以解释baraboom所写的内容:

  

但是,您会注意到$ _COOKIE变量不可用   但是......如果你重新加载那个页面,它们就会出现。

<?php 
 if (!empty($_POST)) {
  // set the cookie with the submitted user data
  setcookie('color',$_POST['color']);
  setcookie('name', $_POST['name']);
  // redirect the user to final landing page so cookie info is available
  header("Location:form_data.php");
 } else {
  echo "<b>fav color:</b>".$_COOKIE['color'];
  echo "<b>name:</b>".$_COOKIE['name'];
 }
?>

试图理解为什么会这样,因为用户被重定向到提交页面。