我使用ajax $ .post方法发送用户并传递给我的数据库,一切看起来不错,但mysql_fetch_array不从数据库中获取数据。 这是jquery:
$(document).ready(function(){
$('#but').click(function(){
//$('#load').html('<strong>در حال ارسال پیام، لطفا منتظر باشید</script>');
var pcode = $('#pcode').val();
var pass = $('#pass').val();
$.post('login_ajax.php',{php_pcode:pcode,php_pass:pass,su:"set"},function(data){$('#load').html(data);});
});
});
这是php代码:
<?php
if (isset($_POST['su'])) {
$pcode = $_POST['php_pcode'];
$pass = $_POST['php_pass'];
require_once('../inc/db.php');
$res = mysql_query("SELECT * FROM user WHERE pcode='$pcode' AND passs='$pass'");
$fe = mysql_fetch_assoc($res);
$co = mysql_num_rows($res);
if ($co == 1) {
$_SESSION['pcode'] = $pcode;
$_SESSION['pass'] = $pass;
$_SESSION['firstname'] = $fe['firstname'];
$_SESSION['lastname'] = $fe['lastname'];
$_SESSION['sex'] = $fe['sex'];
$_SESSION['level'] = $fe['level'];
if ($_SESSION['level'] == 1) {
header('location: admin_panel.php');
}
elseif ($_SESSION['level'] == 2) {
header('location: elementary_panel.php');
}
elseif ($_SESSION['level'] == 3) {
header('location: guidance_panel.php');
}
elseif ($_SESSION['level'] == 4) {
header('location: highschol_panel.php');
}
elseif ($_SESSION['level'] == 5) {
header('location: art_panel.php');
}
}
elseif ($count==0){
echo "کد کاربری اشتباه است";
//$_SESSION['msg'] = "کد پرسنلی یا رمز عبور اشتباه است";
//header('location: login.php');
}
}
&GT;
答案 0 :(得分:0)
你有多个错误:
1)易受[SQL注入攻击(http://bobby-tables.com)的影响 2)您的查询完全没有错误处理。从不假设成功。总是假设失败并将成功视为一个惊喜。绝对的骨干最小&#34;安全&#34;编码类似于:
$result = mysql_query($sql) or die(mysql_error());
^^^^^^^^^^^^^^^^^^^^^^^
3)使用过时/弃用的数据库接口(不应再使用mysql _ *()函数)
4)错误匹配的变量名称:
$co = mysql_num_rows($res);
^^---the count
if ($count == 1) {
^^^^^---where did this variable come from?
由于您正在检查错误的值,因此您的所有$ _SESSION构建代码永远不会被执行,因此您的整个脚本都是无用的。
5)无法在任何地方调用session_start()
,因此当脚本退出时,您的$ _SESSION变量将会丢失。