Отправка в Mysql с использованием Php с солью и MD5 - PullRequest
0 голосов
/ 03 августа 2011
 <?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!";

?>

Ответы [ 3 ]

4 голосов
/ 03 августа 2011

Вам нужно поставить кавычки вокруг $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-инъекций.

2 голосов
/ 03 августа 2011

В строке

$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]')");
1 голос
/ 03 августа 2011

Вы не поместили $ secPass в кавычки в запросе.md5 возвращает только строку, поэтому она должна быть заключена в кавычки, если вы хотите сохранить ее в строковом поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...