<?php
require_once "dbcred.php";
$dbh = testdb_connect ();
/* Obliterate bad input */
$badpasses = $_POST['regpass'];
$salt = '~`!@#$%^&*()_-+=}]{[\|"><';
$secPass = md5($badpasses.$salt);
$newStudent = $dbh->exec ("INSERT INTO Student (uname, pass, fname, lname, email, currGrade) VALUES('$_POST[reguser]',$secPass,'$_POST[regfirst]','$_POST[reglast]','$_POST[regemail]','$_POST[regclassrank]')");
echo "Thanks for signing up!";
?>为什么这不再提交到我的mysql数据库?下面的代码正在提交..
<?php
require_once "dbcred.php";
$dbh = testdb_connect ();
/* Obliterate bad input */
$newStudent = $dbh->exec ("INSERT INTO Student (uname, pass, fname, lname, email, currGrade) VALUES('$_POST[reguser]','$_POST[regpass]','$_POST[regfirst]','$_POST[reglast]','$_POST[regemail]','$_POST[regclassrank]')");
echo "Thanks for signing up!";
?>发布于 2011-08-03 05:39:42
在队列中
$newStudent = $dbh->exec ("INSERT INTO Student (uname, pass, fname, lname, email, currGrade) VALUES('$_POST[reguser]',$secPass,'$_POST[regfirst]','$_POST[reglast]','$_POST[regemail]','$_POST[regclassrank]')");您忘记了$secPass周围的引号。尝试以下代码:
$newStudent = $dbh->exec ("INSERT INTO Student (uname, pass, fname, lname, email, currGrade) VALUES('$_POST[reguser]','$secPass','$_POST[regfirst]','$_POST[reglast]','$_POST[regemail]','$_POST[regclassrank]')");发布于 2011-08-03 05:39:46
您需要在查询中用引号将$secpass括起来:
$newStudent = $dbh->exec ("INSERT INTO Student (uname, pass, fname, lname, email, currGrade) VALUES('$_POST[reguser]','$secPass','$_POST[regfirst]','$_POST[reglast]','$_POST[regemail]','$_POST[regclassrank]')");仅供参考,您的代码在这里还有很多其他问题。最大的问题是盐应该是随机的。您可以将其存储在数据库中的密码旁边,但是为每个密码设置不同的随机盐大大减少了彩虹表的使用。
其次,这是一个更大的问题,您需要使用mysql_real_escape_string()或通过将数据库访问转换为使用PDO来转义变量。否则,您将以SQL注入攻击的形式向痛苦的世界敞开大门。
发布于 2011-08-03 05:41:31
在查询中,您没有将$secPass放在引号中。md5只返回一个字符串,所以如果您想将其存储在字符串字段中,则应该将其放在引号中。
https://stackoverflow.com/questions/6918946
复制相似问题