我希望有人能帮我看看这个错误的来源。
我有一个包含两个字段的表单:电子邮件和密码。表单的操作将其带到一个应该
的php页面在这个阶段它不完整,我只回显脚本末尾的一些字段 看看它是否有效。
我测试了它,并且在最后一行出现了意外的结束错误;我遗漏了一个支架。所以我虽然没有其他错误,但是当我再次测试它时我得到了这个错误:
您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在第6行的“@ gmail.com”附近使用正确的语法
@ gmail.com是我提交的电子邮件的最后一位。
以下是php(action)页面的代码:
<?php
session_start();
$_SESSION['sessionemail'] = $_POST['email'];
$_SESSION['sessionpassword'] = $_POST['password'];
$_SESSION['authuser'] = 0;
$dbhost = 'somewhere.com';
$dbuser = 'user';
$dbpass = 'pw';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
$dbname = 'medreunten_db1';
mysql_select_db($dbname) or die(mysql_error($conn));
$query = 'SELECT
name, smacker, surname, sex, age, nationality, email
FROM
employee
WHERE
email = ' . $_POST['email'];
$result = mysql_query($query, $conn) or die (mysql_error($conn));
extract(mysql_fetch_assoc($result));
while ($row = mysql_fetch_array($result)) {
echo $row['name'];
echo $row['surname'];
echo $row['age'];
}
?>
我尝试删除前5行,但仍然遇到同样的错误。
不知何故,当php被解析时,浏览器会读取电子邮件变量的内容,就像它是我的PHP代码的一部分一样。至少这是我的想法,因为我收到的错误表明“@ gmail.com”附近的语法有问题。
我希望有人能给我一个线索!
答案 0 :(得分:2)
您有SQL注入,在发送到MySQL数据库之前,始终将mysql_real_escape_string()
应用于任何用户提交的或可能被篡改的数据。
请注意电子邮件变量周围的'
。
$email = mysql_real_escape_string($_POST['email']);
$query = "
SELECT name, smacker, surname, sex, age, nationality, email
FROM employee
WHERE email = '$email'
";
答案 1 :(得分:-1)
<?php
session_start();
$_SESSION['sessionemail'] = $_POST['email'];
$_SESSION['sessionpassword'] = $_POST['password'];
$_SESSION['authuser'] = 0;
$dbhost = 'dedi147.cpt2.host-h.net';
$dbuser = 'medreunten_1';
$dbpass = 'AGqrVrs8';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
$dbname = 'medreunten_db1';
mysql_select_db($dbname) or die(mysql_error($conn));
$query = "SELECT name, smacker, surname, sex, age, nationality, email FROM employee WHERE email = '" . $_POST['email']."'";
$result = mysql_query($query, $conn) or die (mysql_error($conn));
extract(mysql_fetch_assoc($result));
while ($row = mysql_fetch_array($result)) {
echo $row['name'];
echo $row['surname'];
echo $row['age'];
}
?>
试试这个,应该工作