$ _GET不能读取我的php文件的第二页,但是当我试图回应它的工作时

时间:2012-09-30 12:43:12

标签: php html

<?php
if (isset($_GET['id'])) {
$c = $_GET['id'];
}
mysql_connect("localhost","root","");
mysql_select_db("blog");
?>
<html>
<head>
<body background="u.jpg">
<center>

<a href="register.php"><img src="1.jpg" width="100" height="50"/></a>
<a href="login.php"><img src="2.jpg" width="100" height="50"/></a>
<a href="index.php"><img src="3.jpg" width="100" height="50"/></a>
</center>
<center>
<title>Pinoy Blog</title>
</head>
<?php
if(isset($_POST['submit']))
{
$content = $_POST['content'];

mysql_query("INSERT INTO comment (comment,p_id) VALUE('$content','$c')");
echo '<a href="index.php">span style="font-size:26px;"><strong><span style="font-family: verdana, geneva, sans-serif; ">Success! Tignan ang post.&nbsp;</span></strong></span>.</a> 
|| <a href="post.php">Magpost ulit? Click mo to.</a>';
}else{
?>
<form action='post.php' method='post'>
<span style="font-size:26px;"><strong><span style="font-family: verdana, geneva, sans-serif; ">Comment:&nbsp;</span></strong></span>
<textarea name='content' ></textarea><br />
<input type='submit' name='submit' value='POST!'/>
</form>
<?php
}
?>

<center>
</body>
</html>

我遇到了$ _GET的问题,当我点击提交按钮时,它没有读取来自我的第一页php的“id”。这是id的值来自<?php echo $content."<p><a href='post.php?id=$pid'>Comment.</a>"?></p>的链接,但是当我尝试运行此echo $_GET['id'];时,它的工作表明它有价值。

4 个答案:

答案 0 :(得分:1)

1)当你从第一页到第二页带链接时,它被称为查询字符串&amp;你会在$ _GET ['id']

中得到它

2)但现在你在第二页&amp;单击提交按钮,这意味着它是新的http请求,它不携带来自先前http请求的$ _GET值。所以你需要将$ _GET ['id']存储到第二页作为隐藏表格字段。

更改您的PHP代码如下

if (isset($_REQUEST['id'])) {
$c = $_REQUEST['id'];
}

现在在表单中选择一个隐藏字段。

<form action='post.php' method='post'>
   <span style="font-size:26px;"><strong><span style="font-family: verdana, geneva, sans-serif; ">Comment:&nbsp;</span></strong></span>
   <input type="hidden" value="<?php echo $_REQUEST['id'] ?>" name="id">
  <textarea name='content' ></textarea><br />
   <input type='submit' name='submit' value='POST!'/>
</form>

注意:$ _REQUEST默认包含$ _GET,$ _POST和$ _COOKIE

的内容

答案 1 :(得分:0)

您正在提交POST表单,然后搜索GET变量???

说实话,我很难理解这个问题,你说当你第一次登陆页面时,$ _GET ['id']正在打印出来,但是当你在该页面上提交表格时ID不存在?

答案 2 :(得分:0)

首先,你在何时/何时echo显示查询字符串值?

更重要的是,我将假设我们看到的代码是post.php,并且该页面实际上是在提交给自己。我还要假设当你第一次加载页面时,你会使用查询字符串参数。像这样:

/path/to/post.php?id=123

但是,当您提交表单时,您会更改该网址:

<form action='post.php' method='post'>

现在你正在加载这样的东西:

/path/to/post.php

URL上没有更多的查询字符串值,因此当PHP代码响应此请求时,$_GET['id']中没有任何内容。在向服务器提交请求时,您需要包含查询字符串值。这样的事情可能有用:

<form action="post.php?id=<?php echo htmlspecialchars($_GET['id']); ?>" method="post">

相反,您可以在表单中设置隐藏字段,而不是混合POSTGET值。像这样:

<input type="hidden" name="id" value="<?php echo htmlspecialchars($_REQUEST['id']); ?>" />

然后您的form action将不必更改,但您必须更改如何访问PHP代码中的值。 $_REQUEST['id']将从中提取 GET值 POST值,因此只需要存在于其中一个值中。这样,在第一次加载页面和将页面提交回自身时,可以使用相同的数组。

请注意此处使用htmlspecialchars()。我不是一位PHP专家,但我明确试图做的是防止一些跨站点脚本攻击,代码会盲目地回应页面(代表你)用户提交的输入,这可能是恶意的。 url encode()也可以做到这一点。值得进一步研究以满足您的需求。

答案 3 :(得分:0)

<form action='post.php?id=<?php echo $id;?>' method='post'>
<span style="font-size:26px;"><strong><span style="font-family: verdana, geneva, sans-serif; ">Comment:&nbsp;</span></strong></span>
<textarea name='content' ></textarea><br />
<input type='submit' name='submit' value='POST!'/>
</form>

它会发布表格到post.php?id = 1或任何其他 你会得到$_GET['id']

的价值观

action='post.php'替换为action='post.php?id=<?php echo $id;?>'