【发布时间】:2012-05-27 10:11:47
【问题描述】:
我的网站 (mconchicago.com/Contact_Us) 上有一个联系我们提交表单。
它应该被设置为每次提交都会获得一个自动编号和一个当前时间戳。现在一切都在工作,除了时间戳,它把我带到了疯狂的边缘。每次都是零。
这是上传时记录的样子:
http://www.mconchicago.com/Screenshots/Records.jpg
这就是我配置时间戳字段的方式:
http://www.mconchicago.com/Screenshots/Structure.jpg
这是我最后一次尝试使 PHP 工作:
<?
$id=$_POST['mysql_insert_id()'];
$first_name=$_POST['first_name'];
$last_name=$_POST['last_name'];
$company=$_POST['company'];
$email=$_POST['email'];
$address=$_POST['address'];
$city=$_POST['city'];
$state=$_POST['state'];
$zip=$_POST['zip'];
$phone=$_POST['phone'];
$reason=$_POST['reason'];
$comments=$_POST['comments'];
$timestamp=$_POST['UNIX_TIMESTAMP()'];
mysql_connect("emellis2002.db.9243147.hostedresource.com", "emellis2002", "Newpwd99@") or die(mysql_error());
mysql_select_db("emellis2002") or die(mysql_error());
mysql_query("INSERT INTO `data` VALUES ('$id', '$first_name', '$last_name', '$company', '$email', '$address', '$city', '$state', '$zip', '$phone', '$reason', '$comments', 'timestamp')");
Print "Your information has been received. Thank you for getting in touch.<br><br>";
Print "<a href=http://www.mconchicago.com/Contact_Us.html>CLICK HERE</a> to return to our web site."
?>
您可以从结构屏幕截图中看到,我尝试了许多不同的语法组合,但没有成功,在此过程中查看了许多论坛帖子。我错过了什么?
【问题讨论】:
-
请注意,您的代码容易受到SQL injection 的攻击,这是一个严重的安全问题,您应该先使用 PHP 的内置 mysql_real_escape_string 函数转义您的 POST 变量,然后再将它们放入
INSERT查询中来解决这个问题:) -
感谢您告诉我。我会阅读这些参考资料。
-
不,使用 HTTPS 不会阻止 SQL 注入。基本上,您的代码中发生的事情是您从 POST 超全局变量中获取用户输入,然后将该输入直接插入到 MySQL 查询中。 HTTPS 仅确保您的服务器和客户端之间的连接的安全性。它不能保证客户不会向您发送错误的输入 - 只是所有输入,无论好坏,都会安全地发送给您,不会被任何人窃听。
-
有道理。感谢您的及时回复。
-
不客气!快乐编码:)
标签: php mysql html forms timestamp