首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP+MYSQL编程 » [原创]高手帮忙,我的cookie无法传递!  


  作者:lazyworm
  注册时间:2004-07-22
  主题/回复:1/0
  积分:405
  等级:★★☆(五级)
  称号:略有小成

  lazywormw
  未提供
  www.

 

 发表:2004-07-22 03:36:38 阅读 2100 次 回复 1 次 得分1  |   字号 字色
[原创]高手帮忙,我的cookie无法传递!
象做一个留言板,出现COOKIE无法传递现象!
程序包含login.php,show.php,word.php,write.php如下:
login.php//登陆

<form method="POST" action="show.php">
<p><input type="text" name="nick" size="20"><input type="submit" value="提交" name="B1"></p>
</form>

show.php//显示标题,作者,时间

<?
setcookie("nick",$_POST[nick]);
?>
<html>
<head>
</head>
<body>
<p align="right"><a href="write.php">发表新话题</a></p>
<?
if (!isset($_GET[page]))
$page=1;
else
$page=$_GET[page];
$link_ID=mysql_connect("localhost","root");
mysql_select_db("talk"); 
$str="select * from lyb ORDER BY chtime desc;" ; 
$result=mysql_query($str, $link_ID); 
$rows=mysql_num_rows($result); 
$pa=ceil($rows/3);
$low=($page-1)*3;
if($page==$pa&&($rows%3)<>0){$x=($rows%3);} else {$x=3;}
if($rows==0){$x=0;}//
$str="select * from lyb ORDER BY chtime desc limit $low,$x;" ;
$result = mysql_query($str,$link_ID);
for ($n=1;$n<=$pa;$n++)
{
echo "第";
echo "<a href=show.php?page=$n>$n</a>";
echo "页 ";
}
echo "<table>";
for ($i=0;$i<$x;$i++)
{
$r=mysql_fetch_array($result);
$l=$low+$i;
echo "<tr><td><a href=word.php?page=$l>$r[title]</a></td>
<td>$r[name]</td>
<td>$r[chtime]</td></tr>";
}
echo "</table>";
mysql_close($link_ID);
?>

</body>
</html>

write.php//获取内容并存入数据库

<form method="POST" action="write.php">
<p align="center">请输入标题:<input type="text" name="title" size="48"></p>
<p align="center"> </p>
<p align="center">  <textarea rows="20" name="word" cols="100"></textarea></p>
<p align="center"> </p>
<p align="center"><input type="submit" value="提交" name="B1"> <input type="reset" value="全部重写" name="B2"></p>
</form>
<title>发表话题</title>
<body>
<?

if ($_POST[word])
{
$link_ID=mysql_connect("localhost","root");
mysql_select_db("talk"); 
$time=date("Y-n-j H:i:s");
$str="INSERT INTO lyb(word,name,chtime,title) values
('$_POST[word]','$_COOKIE[nick]','$time','$_POST[title]')" ;
mysql_query($str,$link_ID); 
mysql_close($link_ID);
}
if ($_POST[B1])
echo "<meta http-equiv=refresh content='0; url=show.php'>";
?>
</body>

word.php//显示内容

<?php
$link_ID=mysql_connect("localhost","root");
mysql_select_db("talk"); 
$str="select * from lyb ORDER BY chtime desc;" ; 
$result=mysql_query($str, $link_ID); 
if (isset($_GET[page]))
{
mysql_data_seek($result,$_GET[page]);
$r=mysql_fetch_array($result);
echo $r[word];
}
mysql_close($link_ID);
?>

现在问题是:用户登陆并发表文章后,第一次可以正确显示,但继续发第二篇文章后却无法取得用户的名字,即无法从数据库里取得name的值,其他的正常显示,应是COOKIE的问题,请教高手其中怎么回事,应如何解决?多谢多谢

还有,用SESSION的话,也有两种情况:
如果用session start();$nick=$_POST[nick];session_register(nick);则可以显示用户名,不过要是在当前用户没关闭浏览器时,用另一用户登陆并发表文章,则显示出来的用户名仍为第一个用户名,其他正常;
如果直接用session start();$_SESSION[nick]=$_POST[nick];则结果跟COOKIE一样,请高手们指教啊!我郁闷了一晚上了
 
 1#楼  
 
  回复人:INP
  注册时间:2004-04-05
  主题/回复:12/38
  积分:516
  等级:★★☆(五级)
  称号:略有小成

用户联系方式已设置为保密
 1#楼 发表于2004-07-27 23:24:34  评分:1 

我看了一下,有点想法,简单说一下:
第一次留言以后,就会转到show.php吧,然后执行setcookie("nick",$_POST[nick]);因为这时候你的$_POST[nick]已经是空了,因为从write.php向show.php你没有传递$nick这样的变量,所以执行setcookie后,cookie就赋空值了!!setcookie你不能放到show.php里。解决方法你应该能弄出来吧,我都说到这了,希望抛砖引玉,画龙点睛。
至于session,和cookie一样,你也犯了同样的错
一点认识,不足道,望指教
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.008sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版