2014-11-06 61 views
0

我有一个登录div /页面。此时,登录表单有一个外部文件config.php的动作。每当用户点击提交,当然它会去config.php文件,如果用户登录失败,在config.php文件中,用户将重定向到login.html页面。如果登录失败,则在配置文件中显示回显

我现在的问题是如果用户无法登录,如何在窗体底部/底部回显它?

这是我的代码:

<?php 
    session_start(); 

    // include connection file 
    include("configPDO.php"); 

    $member_email=$_POST['member_email']; 
    $member_password=$_POST['member_password']; 
    $return = mysql_real_escape_string($_POST['return']); 

    $STM = $dbh->prepare("SELECT * FROM customer WHERE member_email = :member_email AND member_password = :member_password"); 

$STM->bindParam(':member_email', $member_email); 
$STM->bindParam(':member_password', $member_password); 

$STM->execute(); 

$count = $STM->rowCount(); 

$row = $STM -> fetch(PDO::FETCH_ASSOC); 

if ($count == 1) { 
    session_start(); 
    $_SESSION['login_id'] = $row['member_id']; 
    $_SESSION['member_name'] = $row['member_name']; // added 
    $_SESSION['member_email'] = $row['member_email']; // added 
      //echo 'SESSION =' .$_SESSION['myusername'];    
      //echo 'ROW =' .$row['myusername']; 
      //var_dump($row); 
    if ($_SESSION['login_id'] != '' || $_SESSION['login_id'] > 0) { // edited 
     header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); 
    } else { 
     header("location: .$return"); 
    } 
} 



else 
{ 
header("location:.$return"); 
} 
$dbh = null; 
?> 

这是我的形式:

 <form method="post" enctype="multipart/form-data" action="config-login.php"> 
      <table width="345" align="center" style="background:honeydew; vertical-align:top; margin:0px auto; border:solid medium yellowgreen;"> 
       <td class="myimage">Email :</td> 
       <td width="196" style="padding-right:2px;"><input type="text" name="member_email" style="width:100%"/></td> 
       </tr> 
       <tr> 
       <td class="myimage">Password : </td> 
       <td style="padding-right:2px;"><input type="password" name="member_password" style="width:100%"/></td> 
       </tr> 
       <tr> 
      </table> 
       <p style="background:greenyellow; display:block; width:100%; overflow:hidden; padding:10px 0;"> 
       <input class="myimage" style="margin-right:10px; padding:0 10px; float:right;" type="submit" value="Register"/></p> 
     </form> 

而且我想显示登录在表格的底部失败。有人可以帮忙吗?非常感谢你。



[UPDATE]

我已经使用由@Mour解释代码和代码工作等魅力。 Hoewever,我忘了一件事,如果这个登录表单是通过点击功能与JavaScript显示的,这意味着如果点击login的文本,则会显示此登录表单。所以我现在想要的是,如果登录失败,我想保持这个登录表单不断点击登录文本不断显示。

 <li> 
      <a href = "javascript:void(0)" 
       onclick ="document.getElementById('light').style.display='block'; 
         document.getElementById('fade').style.display='block'">Login</a></li> 
    </ul> 

    <!--Black Overlay-->   
    <div id="fade" class="black_overlay" onLoad="initDynamicOptionLists()"></div> 

    <!--Pop Up Div-->  
    <div id="light" class="white_content"> 

    <div id="loginbox"> 
     <span id="login-form">Login</span> 
      <form method="post" action="config-login.php"> 
       <table width="345" align="center" style="background:honeydew; vertical-align:top; margin:0px auto; border:solid medium yellowgreen;"> 
        <tr> 
         <td class="myimage">Email :</td> 
         <td width="196" style="padding-right:2px;"><input type="text" name="member_email" style="width:100%"/></td></tr> 

        <tr> 
         <td class="myimage">Password : </td> 
         <td style="padding-right:2px;"><input type="password" name="member_password" style="width:100%"/></td></tr> 

       </table> 

        <div style="background:greenyellow; display:block; width:100%; overflow:hidden; margin:10px 0; padding:10px 0;"> 

         <input type="hidden" name="return" value="<?php echo $_SERVER['REQUEST_URI']; ?>" /> 

         <p><?php 
          if($_GET['result']=='failed'){ 
          echo 'invalid login'; 
          }?> 
         </p> 

         <input class="myimage" style="margin-right:10px; padding:0 10px; float:right;" type="submit" value="Login"/> 

         <span style="position: absolute; top: 11px; right:1px; color:white;" id="closeBlocked"> 
          <a style="color:green; text-decoration:none; background:white; padding:10px;" 
           href = "javascript:void(0)" 
          onclick ="document.getElementById('light').style.display='none'; 
             document.getElementById('fade').style.display='none'"><b>X</b></a></span> 
        </div> 
      </form> 

    </div> 

    </div> 
    <!-- End of Pop Up Div--> 
+0

您可以使用Ajax来实现这一点。 – 2014-11-06 05:22:45

+0

在'session'中设置错误消息并将其打印在查看页面中。 – 2014-11-06 05:27:38

+0

............怎么样? – klaudia 2014-11-06 05:29:37

回答

0

与ajx你可以很容易地实现它。 否则,如果你不想要使用ajax,那么当你重定向到登录页面或错误 通过发送一些状态类型的变量与url header(“location:login.php?status ='fails''); 和登录页面当用户来登录页面检查这个状态变量,如果它的ststus失败你可以警告一些错误,否则你很好走。

+0

我不擅长Ajax和JavaScript。你能帮忙吗? – klaudia 2014-11-06 05:32:21

+0

当然.. http://jqueryvalidation.org/这里你可以尝试你想要的任何首先下载,然后玩你的本地机器上的每个例子... – kki3908050 2014-11-06 05:33:44

1

改变配置-的login.php代码如下

else 
{ 
header("location:.$return"."?result=failed"); 
} 

,并在下面代码的形式写在上面

<?php 
if($_GET['result']=='failed'){ 
echo 'invalid login'; 
} 
+0

我已经投票了你的答案。但我忘记了一件你必须知道的事情。如果你能解决这个问题,请看我的更新问题。 – klaudia 2014-11-06 06:27:19

0

你也可以将一个arrayobject,并通过在验证错误和然后将其设为JSON并将其传递给header

我已经写和使用过这个,虽然它可能不是最好的,但它的干净。

这里是linklink与代码的相关部分。

switch($count){ 
    case 0: 
      $array[$i++]='invalid or too short name. use alphanumerics,_'; 
      break; 
    case 1: 
      $array[$i++]='invalid or too short password,use alphanumerics,_,@ ,$'; 
      break; 
    case 2: 
      $array[$i++]="invalid email address"; 
      break; 
    case 3: 
      $array[$i++]="invalid or too short address, use alphanumerics,-,_,:"; 
      break; 
    default: 
      $array[$i++]="undefined error"; 
       break; 
} 
// ... 
if($array!=NULL){ 
    $_SESSION['error']=json_encode($array); 
    header('Location:./signup.php'); 
} 

// Of course check for validation of JSON data. You will find it in the manual 
if(isset($_SESSION["error"])){ 
    print_r("<ul>"); 

    $array=json_decode($_SESSION['error']); 
    foreach($array as $elem){ 
    print_r("<li>".$elem."</li>"); 
    } 
    print_r("</ul>"); 

    unset($_SESSION['error']); 
    $_SESSION['error']=NULL; 
} 
+0

由于我没有在那里找到我的任何代码,所以我对你的代码有点迷惑。你愿意和我一起申请吗? – klaudia 2014-11-06 06:09:17

相关问题