2012-11-15 59 views
2

我是新來的PHP,並試圖開發登錄腳本,但是當我輸入值不工作。我甚至無法找到,因爲當我點擊提交,只是刷新頁面登錄腳本不按要求工作

這裏的錯誤是我的代碼

<?php include "../utilities/config.php"; 

foreach($_GET as $key=>$value) 
{ 
${$key} = trim($value); 
} 
$error = ''; 
if($checking_member_availability == 'yes'){ 
if(empty($user_name)){ 
    $error .= "Please enter user name.<br />"; 
} 
if(empty($password)){ 
    $error .= "Please enter password.<br />"; 
} 
if(empty($error)){ 
     $sql = "select * from `".SITE_TABLE_PREFIX."user` where  email='".$user_name."' and pwd='".$password."'"; 
     $resultUser = mysql_query($sql) or die(mysql_error().$sql); 
     if(mysql_num_rows($resultUser)>0){ 
     $rowUser = mysql_fetch_array($resultUser); 
     $error .= ''; 
     $_SESSION['email']=$user_name; 
     }else{ 
     $error .= "Please check Email and Password."; 
    } 
} 

if(empty($error)){ 

    echo "myaccount.php"; 
} 
else{ 
    echo "<font color='#A01D49'>$error</font>"; 
} 
} 
?> 

請誰能幫助我,我已經花了很多的時間都沒有成功

下面是HTML代碼

<script type="text/javascript" language="javascript"> 
function validation() 
{ 
var password = trim(document.form1.password.value); 
var user_name = trim(document.form1.user_name.value); 
var type = trim(document.form1.type.value); 
http.open("GET", "processor.php?checking_member_availability=yes&password="+ 
        escape(password)+"&user_name="+ escape(user_name)+"&type=" + escape(type) , true); 
http.onreadystatechange = handleHttpResponse; 
http.send(null); 
return false; 
} 
</script> 
</head> 
<table width="241" border="0" cellspacing="0" cellpadding="0"> 
     <tr> 
      <td><table width="100%" border="0" cellspacing="0" cellpadding="0" <?php if($_SESSION['user_id']!=''){?> style="display:none;"<?php }?>> 
       <tr> 
       <td align="left" valign="top" class="loginBg"> 
        <img src="img/logintxt.jpg" alt = '' width='100' height='29' border='0'> 
       </td> 
       </tr> 
       <tr> 
       <td align="left" valign="top" class="login"><form name="form1" id="form1" action="" method="post" onSubmit="return validation();"> 
        <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
        <tr><td colspan="3"><span id="user"></span></td></tr> 
         <tr> 
         <td align="left" valign="middle" class="height"><label class="boldtxt">Email:</label></td> 
         <td align="left" valign="middle" class="heightMid"><input type="text" name="email" id="email" /> 
         </td> 
         </tr> 
         <tr> 
         <td align="left" valign="middle"><label class="boldtxt">Password:</label></td> 
         <td align="left" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0"> 
          <tr> 
           <td align="left" valign="top"><input type="password" name="password" id='password' class="loginfld" /> 
           </td> 
           <td align="left" valign="middle"><input type="image" src="img/submit.jpg" class="submit" onClick="return validation();" /> 
           </td> 
          </tr> 
          </table></td> 
         </tr> 
         <tr> 
         <td align="left" valign="top">&nbsp;</td> 
         <td align="left" valign="top"><a href="forget_password.php" class="normalTxt">Forgot your password?</a><br /> 
         </td> 
         </tr> 
        </table> 
        </form></td> 
       </tr> 
      </table></td> 
     </tr> 
     <tr> 
      <td align="left" valign="top"> 
      <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
        <tr> 
         <td align="left" valign="top"><a href="provider_registration.php"><img src="images/applybut.jpg" alt="" border="0" class="apply" /></a></td> 
        </tr> 
        <tr> 
         <td align="left" valign="top"> 
         <?=$value?> 
         </td> 
        </tr> 
        <tr> 
         <td align="left" valign="top">&nbsp;</td> 
        </tr> 
        <tr> 
         <td align="left" valign="top">&nbsp;</td> 
        </tr> 
       </table> 
      </td> 
     </tr> 
     </table> 
+0

你可以發佈創建表單的HTML嗎? –

+3

您的代碼易於SQl注入。查看PDO或mysqli,並學習如何使用準備好的語句(不是很難,但爲將來節省很多麻煩!)。看起來你依賴於register_globals。不要這樣做,只需關閉register_globals即可。 –

+0

我們需要查看html以幫助您。 –

回答

0

您正在使用的形式method="post",但尋找$_GET

可以使用method="get"$_POST

正如您從評論中收集的,您的代碼在安全性方面還存在其他一些問題。不要氣餒 - 每個人都是初學者。但是,你真的應該SQL Injection閱讀並停止分配所有的$ _GET值轉換爲字符串 - 命名他們每個人的全面,即:

$user_name = trim($_GET['user_name']); 

祝你好運,並堅持下去!

啊,正如斯蒂芬在評論中正確指出的那樣,JS使用get來提交帖子,所以它實際上是'email'的字段名稱,這就是問題所在。

+1

表單是發佈,但JavaScript通過它傳遞它,所以不是我會相信的問題,我認爲它有更多的與「用戶名」字段被命名爲「電子郵件」,然後JavaScript尋找表單名稱「user_name」 – stephenbayer

+0

感謝嚴峻。你能幫助我得到這樣的SQL注入固定,就像你可以編輯代碼的登錄表單處於工作狀態,並沒有SQL注入問題的方式。我很抱歉,我知道我要求很多,但我真的搞砸了 –

+0

嗨Rajan - 我很樂意提供幫助,但您應該真的創建一個新問題,以便將來可以幫助其他人。 –

1

好吧,你有迴音聲明與文件名:

echo "myaccount.php"; 

首先,你確定這是你想要做什麼?我相信會回顯字符串「myaccount.php」。我相信你會想要包含「myaccount.php」

其次,您在JavaScript中引用了表單字段「user_name」,但您嘗試訪問的字段名稱被命名爲「email」。這也可能是問題的一部分。

+0

您似乎還在以複雜的方式進行驗證,有像jQuery一樣的JavaScript庫,它們已經被寫入來執行您正在嘗試進行的異步調用。 – stephenbayer

+0

我想開發一個帶有電子郵件作爲用戶名和密碼的登錄系統。我在網上搜索了幾篇文章,並且從那篇文章中我發現了這個嘀咕是一種登錄代碼。我無法糾正這個問題。這將是非常好的,如果你能改變這個代碼並使它運行,我會非常感激。我知道我在問你很多,但我真的很緊張。 –