Php 未发送Post变量
这真让我烦透了,我想不出来。我有一份表格,其中有几个选项是通过邮寄发送的:Php 未发送Post变量,php,variables,post,Php,Variables,Post,这真让我烦透了,我想不出来。我有一份表格,其中有几个选项是通过邮寄发送的: <form method="POST" action="scripts/submit.php"><strong> To User: <input type="text" name="ID" size="21" /><br /> Short Description: <input type="text" name="Item" size="21" /&g
<form method="POST" action="scripts/submit.php"><strong>
To User: <input type="text" name="ID" size="21" /><br />
Short Description: <input type="text" name="Item" size="21" /><br />
Link: <input type="text" name="Link" size="21" /><br />
Points: <select name="Points">
<option value="1" selected="selected">1</option>
<option value="0">0</option><option value="-1">-1</option>
</select> (1 = Positive, 0 = Neutral, -1 = Negative)<br />
Text: <br /><textarea name="Text" rows="5" cols="50"/></textarea></strong><br />
<input type="submit" value="Send" />
</form>
给用户:
简短描述:
链接:
要点:
1.
0-1
(1=正,0=中性,-1=负)
文本:
下面是submit.php给我带来麻烦的部分:
<?php
include('functions.php');
Connect();
if(!isset($_SESSION))
{
session_start();
}
$id_from = $_SESSION['SESS_MEMBER_ID'];
$id_to = Sanitize($_POST['ID']);
$item = Sanitize($_POST['Item']);
$link = Sanitize($_POST['Link']);
$points= Sanitize($_POST['points']);
$text = Sanitize($_POST['Text']);
我刚刚在我的dev服务器上接收了您的代码,并尝试测试运行它。因为我不知道你的Sanitize()是做什么的,所以我不能确定这个函数里面发生了什么
如果您尝试删除Sanitize(),我很确定它会起作用,您必须查看它的内部才能找到bug
我猜您可能缺少($var,str)之类的内容来清理字符串。你能再多介绍一下这个功能吗
编辑:一些小的拼写错误
编辑:做了一些更多的测试,并使错误发生,两个代码显示它。第一个有效,而第二个给我一个空的var_转储
这个给了我一个完整的var_dump()
给用户:
简短描述:
链接:
分数:10-1(1=正,0=中性,-1=负)
文本:
这个给了我一个空的var_转储
<?
if(!isset($_SESSION))
{
session_start();
}
?>
<form method="post" action=""><strong>
To User: <input type="text" name="ID" size="21" /><br />
Short Description: <input type="text" name="Item" size="21" /><br />
Link: <input type="text" name="Link" size="21" /><br />
Points: <select name="Points"><option value="1" selected="selected">1</option><option value="0">0</option><option value="-1">-1</option></select> (1 = Positive, 0 = Neutral, -1 = Negative)<br />
Text: <br /><textarea name="Text" rows="5" cols="50"/></textarea></strong><br />
<input type="submit" value="Send" />
</form>
<?
$id_from = $_SESSION['SESS_MEMBER_ID'];
$id_to = Sanitize($_POST['ID']);
$item = Sanitize($_POST['Item']);
$link = Sanitize($_POST['Link']);
$points= Sanitize($_POST['points']);
$text = Sanitize($_POST['Text']);
var_dump($_POST);
echo $text;
?>
给用户:
简短描述:
链接:
分数:10-1(1=正,0=中性,-1=负)
文本:
根据您对该代码的评论:
$id_query = mysql_query("SELECT ID FROM tbl_users WHERE Username = '$id_to'");
$count = mysql_num_rows($id_query);
$id_row = mysql_fetch_array($id_query);
$id_to = $id_row['ID'];
if ($points > 1 || $points < -1) {
} else {
if (! ($id_to == $id_from)) {
if ($count == 1) {
mysql_query("INSERT INTO tbl_data (Item, Link) VALUES ('$item', '$link')");
header('Location:?id=submit');
} else {}
} else {}
}
也许您正在使用某种方式进行测试,使得$points
大于1或小于-1,$count
为1,$id\u to
与$id\u from
不同,后者会执行else
块,并(尤其是行)头(),用户立即得到重定向
要检查这是否正确,请尝试var\u dump($\u GET)
查看您是否得到类似以下内容:
array (size=1)
'id' => string 'submit' (length=6)
如果您这样做了,并且数据库可能没有更新,那么您需要检查的就是位于头之前的mysql_查询
希望这有帮助。在
方法属性中,post
必须小写。请尝试执行var\u dump($\u post)“代码>以获得其中内容的完整输出。@TomvanderWoerdt我尝试了小写,同样的问题。@DCo对我来说适用于您的HTML。”。。是的-同意@jli-效果很好-也许你想检查functions.php
和Connect()
做什么,谁知道在某处有类似$\u POST=array()
的东西<代码>函数Sanitize($String){//清理MySQL注入中的数据$output=MySQL\u real\u escape\u String(stripslashes($String));返回$output;}
编辑:删除Sanitize不会解决问题。好的,尝试从scripts/submit.php中删除所有内容,因此submit.php中显示的唯一内容如下:
是否有任何内容?如果仅此而已,则它会传递变量。然后尝试从顶部插入一行,以查看变量转储($\u POST)何时为空。。确保var_dump($_POST)始终放在最后一行让我向您展示脚本的其余部分-添加后,事情似乎变得更糟:$id_query=mysql_query(“从tbl_用户中选择id,其中Username='$id_to'”)$count=mysql\u num\u行($id\u query)$id\u row=mysql\u fetch\u数组($id\u query)$id_to=$id_行['id'];if($points>1 | |$points<-1){else{if(!($id_-to===id_-from)){if($count==1){mysql_查询('INSERT-INTO-tbl_-data(Item,Link)值('$Item','$Link'))”);header('Location:'id=submit');}else{}else{}
我也遇到了类似的问题,原因是重定向到同一页面。我正在重定向到?success=1,因此重定向后_POST为空。
<?
if(!isset($_SESSION))
{
session_start();
}
?>
<form method="post" action=""><strong>
To User: <input type="text" name="ID" size="21" /><br />
Short Description: <input type="text" name="Item" size="21" /><br />
Link: <input type="text" name="Link" size="21" /><br />
Points: <select name="Points"><option value="1" selected="selected">1</option><option value="0">0</option><option value="-1">-1</option></select> (1 = Positive, 0 = Neutral, -1 = Negative)<br />
Text: <br /><textarea name="Text" rows="5" cols="50"/></textarea></strong><br />
<input type="submit" value="Send" />
</form>
<?
$id_from = $_SESSION['SESS_MEMBER_ID'];
$id_to = Sanitize($_POST['ID']);
$item = Sanitize($_POST['Item']);
$link = Sanitize($_POST['Link']);
$points= Sanitize($_POST['points']);
$text = Sanitize($_POST['Text']);
var_dump($_POST);
echo $text;
?>
$id_query = mysql_query("SELECT ID FROM tbl_users WHERE Username = '$id_to'");
$count = mysql_num_rows($id_query);
$id_row = mysql_fetch_array($id_query);
$id_to = $id_row['ID'];
if ($points > 1 || $points < -1) {
} else {
if (! ($id_to == $id_from)) {
if ($count == 1) {
mysql_query("INSERT INTO tbl_data (Item, Link) VALUES ('$item', '$link')");
header('Location:?id=submit');
} else {}
} else {}
}
header('Location:?id=submit');
array (size=1)
'id' => string 'submit' (length=6)