каждый раз, когда вы нажимаете кнопку «Войти», я возвращаюсь к экрану входа. - PullRequest
0 голосов
/ 15 ноября 2011

каждый раз, когда нажимаете кнопку входа, он возвращает меня к экрану входа

это мой первый код для входа в систему

    <form action="" method="post" name="log">
    <table border="0" align="center">
  <tr>
    <td colspan="4"><span style="font-size:18px; color:#039; font-weight:bold;">Login</span></td>
    </tr>
  <tr>
    <td width="113">User name</td>
    <td width="120"><span id="sprytextfield1">
      <input name="Uname" type="text" id="LogInUname" size="20" />
      <span class="textfieldRequiredMsg"><br />
      A value is required.</span></span></td>
    </tr>
  <tr>
    <td>Password</td>
    <td><span id="sprypassword1">
      <input name="Pword" type="password" id="LogInPword" size="20" />
      <br />
      <span class="passwordRequiredMsg">A value is required.</span></span></td>
    </tr>
  <tr>
    <td><span class="newUsers"><a href="index.php?learn_id=88">New user</a></span></td>
    <td></td>
    </tr>
  <tr>
    <td>&nbsp;</td>
    <td align="right"><input type="submit" name="submitid" id="LogInbutton" value="Login" /></td>
  </tr>
  </table>

</form>

<?php
session_start();
    if(isset($_POST['submitid'])) {
        $Uname = $_POST['Uname'];
        $Pword = $_POST['Pword'];


            $Uname = stripslashes($Uname);
            $Pword = stripslashes($Pword);
            $Uname = mysqli_real_escape_string($db, $Uname);
            $Pword = mysqli_real_escape_string($db, $Pword);

            $loginUser = " select * from loginaccess where Uname= '".$Uname."' and Pword='".$Pword."'";

            $loginUserResults=$db->query($loginUser) or die($db->error);

            if($loginUserResults -> num_rows == 1) {
                $_SESSION['log']=1;
            header('Location:index.php?learn_id=12');

                }else{

            header('Location:index.php?learn_id=320');
            }
        }

?>

<?php ob_flush() ?>

, и это другая страница, на которую он должен перейти

<?php 
session_start();
        if (!(isset($_SESSION['log']) && $_SESSION['log'] != 1)) {
        header ("Location:index.php?learn_id=3");
    }       
?>

теперь, пожалуйста, кто-нибудь, скажите мне, почему я каждый раз, когда пытаюсь войти, я возвращаюсь на страницу входа, что там не так.

Ответы [ 4 ]

2 голосов
/ 15 ноября 2011

Первый : эта строка

$_SESSION['log']==1; // compare

должно быть

$_SESSION['log']=1; // assign

Второй : Я не вижу session_start(); в самом верху вашей первой страницы (логин)

Третий : Не используйте оба stripslashes и mysqli_real_escape_string. Последнее достаточно (лучше, если вы используете PDO).

0 голосов
/ 15 ноября 2011

Ваша проблема, кажется, $loginUserResults->num_rows в вашем if-утверждении.Вы имеете в виду, что он является частью класса mysqli, даже если он является частью класса mysqli_stmt.

Измените код следующим образом:тогда ваш if:

if($stmt->num_rows == 1) {
    $_SESSION['log']=1;
    header('Location:index.php?learn_id=12');
}
0 голосов
/ 15 ноября 2011

Возможно, вы забыли набрать

session_start();

В начале кода входа, сразу после

<?php ?

Это должно выглядеть так:

<?php
    session_start(); // Here
    if(isset($_POST['submitid'])) {
        $Uname = $_POST['Uname'];
        $Pword = $_POST['Pword'];


            $Uname = stripslashes($Uname);
            $Pword = stripslashes($Pword);
0 голосов
/ 15 ноября 2011

Позвоните session_start();

<?php
 session_start();
   if(isset($_POST['submitid'])) {
        $Uname = $_POST['Uname'];
  ....
   $_SESSION['log']=1; //assign a value
   ...
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...