2013-04-09 103 views
0

大家好,我嘗試在php中執行身份驗證表單。身份驗證表格

第一我建立表單

<form id="frmlogin" name="frmlogin" method="post" action="validarUsuario.php"> 
    <table align="center" width="200px"> 
     <tr> 
      <td colspan="2" align="center"><h3>Iniciar sesi&oacute;n</h3></td> 
     </tr> 
     <tr> 
      <td>Usuario</td> 
      <td> 
       <input type="text" name='usuario' id="usuario" maxlength="50"> 
      </td> 
     </tr> 

     <tr> 
      <td>Password</td> 
      <td> 
       <input type="password" name='password' id="password" maxlength="50"> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2" align="right"> 
       <input type="submit" name="enviar" value="Enviar" > 
      </td> 

     </tr> 

     <?php 

我請validarUsuario所以我包括require_once '../Classes/validarUsuario.php';

在validarUsuario.php我有這樣的代碼

include("conectar_bd.php"); 
conectar_bd(); 

$usr = $_POST['usuario']; 
$pw = $_POST['password']; 
//Obtengo la version encriptada del password 
$pw_enc = md5($pw); 

$sql = "SELECT * FROM ubc_admin_user 
      WHERE username = '".$usr."' 
      AND password = '".$pw_enc."' "; 

$result  =mysql_query($sql,$conexio); 

$uid = ""; 

,但我得到這個錯誤

Notice: Undefined index: usuario in /Users/yp/Sites/.../Classes/validarUsuario.php on line 14 Call Stack: 0.0018 646416 1. {main}() /Users/yp/Sites/.../download/index.php:0 0.0020 654048 2. require_once('/Users/yp/Sites/.../validarUsuario.php') /Users/yp/Sites/.../index.php:38 Notice: Undefined index: password in /Users/yp/Sites/...validarUsuario.php on line 15 Call Stack: 0.0018 646416 1. {main}() /Users/../index.php:0 0.0020 654048 2. require_once('/Users/yp/Sites/.../validarUsuario.php') /Users/yp/Sites/../index.php:38 

任何想法!

+0

[參考可能重複 - 瓦在這個錯誤是否意味着在PHP?](http://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-php) – deceze 2013-04-09 07:42:03

+0

可能重複的[PHP的:「注意:未定義的變量「和」注意:未定義的索引「](http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) – Jocelyn 2013-04-17 15:50:49

回答

2

你的代碼改成這樣

if (isset($_POST['Enviar'])) { 
    $usr = $_POST['usuario']; 
    $pw = $_POST['password']; 
    //Obtengo la version encriptada del password 
    $pw_enc = md5($pw); 

    $sql = "SELECT * FROM ubc_admin_user WHERE username = '".$usr."'AND password = '".$pw_enc."' "; 

    $result  =mysql_query($sql,$conexio); 

    $uid = ""; 
} 
+0

這是如何解決他的錯誤? – Dinesh 2013-04-09 07:53:13

+0

他得到這個錯誤,因爲他沒有提交表單,他試圖訪問郵政價值。 – 2013-04-09 07:54:33

+0

這個答案沒有意義。當他提交表單時,他將重定向到validarUsuario.php,因此他不需要任何此類信息。 – Daanvn 2013-04-09 07:58:52

0

檢查值是否已受理。

if (isset($_POST['usuario'])) { 

} 
if (isset($_POST['password'])) { 

} 

還要確保接收文件的路徑是正確的。

0

在您的HTML表單中,名稱值中包含單引號(')。所以,你應該改變這樣的:

name='usuario' 
name='password' 

到:

name="usuario" 
name="password" 
0

你不需要require_once '../Classes/validarUsuario.php';因爲你的表格將表格後,您重定向到該頁面提交。刪除該行。

或者您可以將表單重定向到與表單相同的地址並添加檢查isset

替換:

<form id="frmlogin" name="frmlogin" method="post" action="validarUsuario.php"> 

有:

<form id="frmlogin" name="frmlogin" method="post" action=""> 

和:

require_once '../Classes/validarUsuario.php'; 

有:

if(isset($_POST['usuario'])){ 
    require_once '../Classes/validarUsuario.php'; 
}