Jquery Mobile -表单提交-错误加载页面


Jquery Mobile - form submission - Error Loading Page

我提交了这样一个表单:

<form action="userlogin.html" method="get" name="log_form" onsubmit="return form_val();">

这一切都很好,然后它开始产生cookie,如果登录数据正确,如下所示:

if ($email){ // 111
    require '/php/lib/dbconnect.inc';
    $email=strtolower($email);
    $password=strtolower($password);
    $result = mysql_query("SELECT name from users where (username = '$email' AND password = '$password')",$db); 
    if(!$result) { echo mysql_error(); exit; } // debug
    $item = mysql_fetch_row($result);
    $result_userid = mysql_query("SELECT user_id from users where (username = '$username' AND password = '$password')",$db); 
    if(!$result_userid) { echo mysql_error(); exit; } // debug
    $item_userid = mysql_fetch_row($result_userid);
    if ('0'==$item[0]){ // 33
    $error .= "You typed the wrong email address or password, please check the information entered.<br><br><br>";
    } // close 33
    else { // 44
    require '/php/lib/setup.inc';
    $user = Encrypt_data ($item_userid[0]);
    setcookie("user_cook", "$user", 0);
    header("Location: /en/");
    } // close 44
    } // close 111

但我总是得到"错误加载页面"数据输入是否正确,因此有些东西是不对的,但什么?

此外,我已经尝试添加我的头包含文件到这个,因此在评估数据是否正确之前传递jQuery移动标签,这确实有效,但当然我不能使用header("Location: /en/");

所以我想澄清一下,这一切都很好,表单正在传递数据,但似乎jQuery在查看其他数据之前需要一些东西…以下作品:

if ($email){ // 111
    include '/home/twovo77/1NTJ3EJZ/php/nav/mobile_header.inc';
    // require '/home/twovo77/1NTJ3EJZ/php/lib/dbconnect.inc';
    $email=strtolower($email);
    $password=strtolower($password);

但是不行,因为它传递到header

mobile_header。公司是:

<? 
require '/php/lib/setup.inc';
require '/php/lib/dbconnect.inc'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head>
<meta charset="utf-8">
<meta name="viewport" content='width=device-width, initial-scale=1.0, maximum-        scale=1.0, min-width=321px'>
<link rel="stylesheet" href="mobile.css" />
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0rc2/jquery.mobile-.0rc2.min.js">
</script>
</head> 
<body> 
<div data-role="page" id="foo" data-title="<? echo $page_title; ?>">
<a href="index.html"><div data-role="header" data-theme="c" style="height:50px; padding:3px;"><img src="/images/logo2.png"></div></a><!-- /header -->
<? echo $header_image; ?>
<div data-role="content"><div class="inner">

那么这里是否有一些必须传递的标签否则你会在加载页面时出现错误

或者,更重要的是,当我执行我的登录代码时,我可以绕过这个,然后回到它…如果有,怎么做?

尝试使用一个绝对的URL为您的表单动作(我还没有完全弄清楚,但基本元素似乎是有点古怪的jQuery移动)。当我得到这个错误时,我会查看Firebug,看看请求是向哪里发出的,通常这将是当前页面和操作位置的相关性问题。

例如,如果你从根目录("/")开始,并从"/gallery/"目录中抓取一个页面,该页面具有"/gallery/"目录中另一个文件的相对URL,那么一旦它被拉入DOM(在"/"级别),任何相对URL都不会匹配。

在一个侧面说明,它不会出现好像你在查询数据库之前正在转义您的数据,这使得注入攻击成为可能:

改变:

"SELECT name from users where (username = '$email' AND password = '$password')"

"SELECT user_id from users where (username = '$username' AND password = '$password')"

:

"SELECT name from users where (username = '" . mysql_real_escape_string($email) . "' AND password = '" . mysql_real_escape_string($password) . "')"

"SELECT user_id from users where (username = '" . mysql_real_escape_string($username) . "' AND password = '" . mysql_real_escape_string($password) . "')"

否则有人可以输入用户名,如:

$username = "' OR 'x'='x";

这使得你的查询看起来像这样(并解析为true):

"SELECT name from users where (username = '' OR 'x'='x' AND password = '$password')"
以下是mysql_real_escape_string的PHP文档:http://php.net/mysql_real_escape_string