我的php脚本将空白信息输入mysql db!

时间:2010-12-20 22:42:26

标签: php mysql forms

当我尝试从表单中输入数据时,我添加了一个新条目,我可以从phpmyadmin看到,但不会传输其他详细信息

我正在使用一个简单的表单收集9个文件帖子是update.php。这是我在update.php中的内容

<?php
$realname = $_POST['realname'];
$age = $_POST['age'];
$country = $_POST['country'];
$gamename = $_POST['gamename'];
$gamelevel = $_POST['gamelevel'];
$itemlevel = $_POST['itemlevel'];
$class = $_POST['class'];
$played = $_POST['played'];
$support = $_POST['support'];

mysql_connect ("localhost", "mydb_userid", "MYPASSWORD") or die ('Error: ' . mysql_error());
mysql_select_db ("mydb_recruitment");

$query="INSERT INTO applicants (ID, realname, age, country, gamename, gamelevel, itemlevel, class, played, support)VALUES ('NULL','".$realname."','".$age."','".$country."','".$gamename."','".$gamelevel."','".$itemlevel."','".$class."','".$played."','".$support."')";

mysql_query($query) or die ('Error updating DB');

echo "You have sucessfully sent an application. Your details will be reviewed and someone will get back to you";

?>

希望有人可以提供帮助,在网上搜索似乎会对某些全局变量有所了解 - 但我不知道我是否可以控制它作为托管网站。

这是注册表格:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Candidate Registration</title>
</head>

<body>

<form medthod="post" action="update.php">

Real Name:<br />
<input type="text" name="realname" size="50" /><br />

Age:<br />
<input type="text" name="age" size="10" /><br />

Country:<br />
<input type="text" name="country" size="20" /><br />

In Game Name:<br />
<input type="text" name="gamename" size="30" /><br />

In Game Level:<br />
<input type="text" name="gamelevel" size="10" /><br />

In Game Item Level:<br />
<input type="text" name="itemlevel" size="10" /><br />

Class Played:<br />
<input type="text" name="class" size="30" /><br />

How long have you played wow?:<br />
<input type="text" name="played" size="10" /><br />

Please enter a brief statement of why you want to join:<br />
<input type="text" name="support" size="5000" /><br />
<br />
<input type="submit" value="Update DB" />

</form>
</body>
</html>

这是update.php表单

<?php
$realname = $_POST['realname'];
$age = $_POST['age'];
$country = $_POST['country'];
$gamename = $_POST['gamename'];
$gamelevel = $_POST['gamelevel'];
$itemlevel = $_POST['itemlevel'];
$class = $_POST['class'];
$played = $_POST['played'];
$support = $_POST['support'];

mysql_connect ("localhost", "mydb_daniel", "mypwd") or die ('Error: ' . mysql_error());
mysql_select_db ("mydb_recruitment");

$query="INSERT INTO applicants (ID, realname, age, country, gamename, gamelevel, itemlevel, class, played, support)VALUES ('NULL','".$realname."','".$age."','".$country."','".$gamename."','".$gamelevel."','".$itemlevel."','".$class."','".$played."','".$support."')";

mysql_query($query) or die ('Error updating DB');

echo "You have sucessfully sent an application. Your details will be reviewed and someone will get back to you";

?>

我理解人们对安全性的担忧,但请理解这只是为了让我乱用并为我的公会制作一个基本的注册表格,我不会要求信用卡详情:)

2 个答案:

答案 0 :(得分:1)

您的表单方法是否设置为POST? - 除非您已明确添加此变量,否则变量将位于$_GET超全局中,因此您的变量将如下所示:

$realname = $_GET['realname'];

如果设置为POST - 请在脚本顶部执行var_dump($_POST),看看是否有任何变量进入您的脚本。

当人们从{* 1}}从domain.com重定向到www.domain.com并且他们将脚本明确地发布到domain.com/script.php并且脚本然后重定向到www.domain.com/script.php,这会清空POST。

修改

您在表单标记中拼写错误.htaccess - 如果您更新此标记,那么它应该有效,因为拼写错误将导致变量作为GET变量发送。

您可以通过以下基本方式修复安全问题:

method

答案 1 :(得分:1)

哇,慢下来。你甚至没有逃过这些数据!

$realname = mysql_real_escape_string($_POST['realname']);

或者逃避一切:

$_POST = array_map('mysql_real_escape_string', $_POST);

注意第二种解决方案并不完全可靠。会产生一些奇怪的结果。通常,最好通过函数/类来运行这些输入以进行验证和清理。

关于你的幽灵问题,试试这个,并在表单提交后注明回复(放在右上方):

var_dump($_POST);
exit;

您的查询中拼写的方法属性错误,这就是它无法正常工作的原因。