2013-09-20 5 views
2

Итак, у меня возникают проблемы с моей страницей входа, где я пытаюсь вернуть процесс регистрации, чтобы я мог отображать код ошибки на моей странице входа, но не могу видеть, куда я иду неправильно ...Login Process Variable Not Set

PHP Ошибка при вводе неверных учетных данных для входа

Notice: Undefined variable: output in C:\inetpub\wwwroot\reveal\store\qadmin\login\login.process.php on line 27

Войти Форма

<div class="widget-body"> 

    <!-- Form --> 
<?php 

    if(isset ($loginerror)) { 

     ?> 

      <div style="width:100%; text-align:center;"> 
       <span style="padding-bottom: 10px; color:red;">Successfully Logged Out</span> 
      </div> 

     <?php 

    } else { 

    ?> 

     <span>Either No Login Data or something is horribly wrong.</span><br /><br /> 

    <?php 

    }; 

?> 
<form method="POST" action="index.php"> 
    <label>Username or Email</label> 
    <input id="username" type="text" name="username" class="input-block-level" placeholder="Your Username or Email address"/> 
    <label>Password</label> 
    <input id="password" type="password" name="password" class="input-block-level margin-none" placeholder="Your Password" /> 
    <div class="separator bottom"></div> 
    <div class="row-fluid"> 
     <div class="span8"> 
      <div class="uniformjs"><label class="checkbox"><input type="checkbox" value="remember-me">Remember me</label></div> 
     </div> 
     <div class="span4 center"> 
      <button class="btn btn-block btn-inverse" id="submit" name="submit" type="submit">Sign in</button> 
     </div> 
    </div> 
</form> 
<!-- // Form END --> 

Index.php

session_start(); 

global $error; 

// Simple check if the user is logged in or not 
if (isset($_POST['submit'])) { 
    include("login.process.php"); 

    $checkUser = login($_POST['username'], $_POST['password']); 

    if ($checkUser == "No") { 


     $error = "true"; 

    } else if (is_array($checkUser)) { 

     $_SESSION['user'] = $checkUser; 
     $_SESSION['loggedin'] = true; 

    } 
} 

if (isset($_SESSION['loggedin'])) { 

    include ("home.php"); 

} 

if (!isset($_SESSION['loggedin'])) { 
    include ("login.php"); 
} 

Login.process.php

function login($username, $password) { 

      include("../config.php"); 

      // Open up a new MySQLi connection to the MySQL database 
      mysql_connect($dbHost, $dbUsername, $dbPassword); 
      mysql_select_db($dbTable); 

      // To protect MySQL injection (more detail about MySQL injection) 

      $username1 = stripslashes($username); 
      $password1 = stripslashes($password); 
      $username2 = mysql_real_escape_string($username1); 
      $password2 = mysql_real_escape_string($password1); 
      $password3 = md5($password2); 
      $sql="SELECT * FROM `users` WHERE username='$username2' AND password='$password3'"; 
      $result=mysql_query($sql); 

      if ($result > 0) { 

       while($logincheck = mysql_fetch_array($result)) { 
       $output = array('username' => $username2, 'uid' => $logincheck['id'], 'superadmin' => $logincheck['superadmin']); 
       }; 

       return $output; 

      } else { 

       $loginerror = "Login Error"; 
       return $loginerror; 

      }; 
} 

Я, вероятно, делать что-то глупое, но не может понять, почему она возвращается эту ошибку !!!! !

ответ

1

Так может быть по какой-то причине ваш запрос не работает, и поэтому никогда не ступала $output

Все, что вам нужно сделать, это установить ваш $output перед циклом, так что в случае, если цикл не работает у вас есть $output уже установлен как array()

if (mysql_num_rows($result) > 0) { 

    $output = array(); // here is the trick 

    while($logincheck = mysql_fetch_array($result)) { 
     $output = array('username' => $username2, 'uid' => $logincheck['id'], 'superadmin' => $logincheck['superadmin']); 
    }; 

    return $output; 

} else { 

    $loginerror = "Login Error"; 
    return $loginerror; 

}; 
+0

проблему с тем, что теперь выход устанавливается он входит в систему без каких-либо набора сеанса для пользователя, группы и т. д. $ logincheck по-прежнему не имеет места? – AaronHatton

+0

проверить обновление, как @hallaji говорит – zzlalani

+0

вам нужно использовать 'mysql_num_rows ($ result)> 0' вместо' $ result> 0' – zzlalani

1

Вы получили эту ошибку, потому что не любая запись на вашем столе, если есть неправильные учетные данные для входа. Итак, просто измените условие if, чтобы подсчитать количество строк в результате, чтобы удалить ошибку. Login.process.php

if (mysql_num_rows($result) > 0) { 

Вместо:

if ($result > 0) { 
0

попробовать этот

function login($username, $password) { 

      include("../config.php"); 

      // Open up a new MySQLi connection to the MySQL database 
      mysql_connect($dbHost, $dbUsername, $dbPassword); 
      mysql_select_db($dbTable); 

      // To protect MySQL injection (more detail about MySQL injection) 

      $username1 = stripslashes($username); 
      $password1 = stripslashes($password); 
      $username2 = mysql_real_escape_string($username1); 
      $password2 = mysql_real_escape_string($password1); 
      $password3 = md5($password2); 
      $sql="SELECT * FROM `users` WHERE username='$username2' AND password='$password3'"; 
      $result=mysql_query($sql); 

      if ($result > 0) { 

$output=array(); 
       while($logincheck = mysql_fetch_array($result)) { 
       $output = array('username' => $username2, 'uid' => $logincheck['id'], 'superadmin' => $logincheck['superadmin']); 
       }; 

       return $output; 

      } else { 

       $loginerror = "Login Error"; 
       return $loginerror; 

      }; 
}