2015-04-06 3 views
0

поэтому я создал простой скрипт для входа на сайт с использованием PHP. Это сработало хорошо, но я сделал некоторые недавние изменения, которые, похоже, не позволяют ему нормально функционировать.PHP Login Script Minor Issue

В основном, когда я помещаю таблицу в массив, я использую переменную $ y, чтобы отслеживать «тип» пользователя, который входит в систему. Однако, когда вход в журнал выполнен успешно, при повторении $ y и $ type оба они возвращают 0. Пользователь может быть либо типом 0, либо типом 1, но кажется, что $ y не назначается по какой-либо причине, когда пользователь найден.

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

// If statement that seems to be giving me trouble 
global $arrayofdata; 
$arrayofdata = array(); 

$n = 0; 
$y = 0; 

// Put tables into an array 
while ($row = mysql_fetch_array($resource)) { 
// If statement to find position of username in array 
if($arrayofdata[$n]['username'] == $username){ 
$y = $n;} 
$arrayofdata[$n] = $row; 
$n++; 
} 

// FULL CODE BENEATH HERE 

<?php 
session_start(); ?> 
<html> 

<head> 
<title>:: clubb3r ::</title> 
</head> 

<body> 
<?php 
    loginscript::login(); 

class loginscript { 

    // Login function.. 
    static function login() { 

    $host = "gcdsrv.com"; 
    global $username; 
    if(isset($_SESSION['username'])){ 
    $username = $_SESSION['username'];} 
    else{ 
    $username = $_POST[uname]; 
    $_SESSION['username'] = $username;} // Store username for later 

    if(isset($_SESSION['password'])){ 
    $password = $_SESSION['password'];} 
    else{ 
    $password = $_POST[pword]; 
    $_SESSION['password'] = $password;} // Store password for later 

    $connect = mysql_connect("gcdsrv.com", "", ""); 

    if(!$connect) { 
    echo "<h1>500 Server Error</h1>"; 
    } 

    $db_select = mysql_select_db("c2h5oh_database", $connect); 

    $resource = mysql_query("SELECT username, password, type, picture, rating FROM accounts;"); 

    global $arrayofdata; 
    $arrayofdata = array(); 

    $n = 0; 
    $y = 0; 

    // Put tables into an array 
    while ($row = mysql_fetch_array($resource)) { 
    // If statement to find position of username in array 
    if($arrayofdata[$n]['username'] == $username){ 
    $y = $n;} 
    $arrayofdata[$n] = $row; 
    $n++; 
    } 

    $n = 0; 

    // Set user type (normal user or bar/club, 0 for user and 1 for bar/club) 
    if(isset($_SESSION['type'])){ 
    $type = $_SESSION['type'];} 
    else{ 
    $type = $arrayofdata[$y]['type']; 
    $_SESSION['type'] = $type; 
    } 

    // Counts entries 
    $count = count($arrayofdata); 
    global $count2; 

    // Login check loop, searches array for username and password in POST, also stores balance of that user for later 
    for($x = 0; $x < $count; $x++) { 
     if($username == $arrayofdata[$x]['username'] && $password == $arrayofdata[$x]['password'] && $username != "" && $password != "") { 
      $z = 1; 
     } 

    } 

     // Fail 
     if($z != 1) { 
     echo "<h1>Bad Username or Password</h1><br />"; 
     echo "<h1><a href='logout.php'>Try Again</a></h1>"; 
     } 

     // Success 
     // If for user success 
     if($z == 1 && $type == 0) { 
     echo "<h1>Login Successful!</h1><br />"; 
     echo "<h1><a href='mainuser.html'>Proceed</a></h1>"; 
     echo $type; 
     echo $y; 
     } 

     //Success 
     //If for bar/club success 
     if($z == 1 && $type == 1){ 
     echo "<h1>Login Successful!</h1><br />"; 
     echo "<h1><a href='mainbar.html'>Proceed</a></h1>"; 
     echo $type; 
     } 

    } 

} 

?> 

</body> 

</html> 
+3

Что вы хотите сказать? –

+0

Не должно быть ваших $ arrayofdata [$ n] = $ row; быть внутри закрытия}, если условие истинно? – MrTechie

+0

Мой вопрос будет, почему $ y всегда 0, если я нахожу правильное имя пользователя в $ n = 5 Mr Techie Я думаю, что вы можете быть чем-то, я еще не помещал строку $ в массив, имя_пользователя 'массива еще не существует. – I2obiN

ответ

0

Так, насколько я вижу, у вас есть две строки, которые устанавливают $y.

`$y = 0;` 

и

// Put tables into an array 
while ($row = mysql_fetch_array($resource)) { 
    // If statement to find position of username in array 
    if($arrayofdata[$n]['username'] == $username){ 
    $y = $n; 
    } 
    $arrayofdata[$n] = $row; 
    $n++; 
} 

Глядя дальше, вы видите эти три линии:

$arrayofdata = array(); //create EMPTY array 
[...] 
if($arrayofdata[$n]['username'] == $username){ //check index $n 
[...] 
$arrayofdata[$n] = $row; //set index $n 

Вы получаете доступ к $arrayofdata[$n], прежде чем установить его. Я предполагаю, что ваш if-statement выдает PHP-предупреждение, управляет вашими журналами;) Вы устанавливаете $y = $n в следующем коде, если ваше утверждение if истинно. Поскольку $arrayofdata[$n] не существует, if-clause, если всегда false, и $y остается 0.

+0

Да именно это! Такая глупая ошибка от моего имени, спасибо :) – I2obiN