2015-08-10 2 views
1

Я написал небольшой код в Visual Basic, который размещает имя пользователя и пароль для входа в систему login.php локально, что ... вроде работает, но по какой-то причине PHP-скрипты полностью пропускают if выдает ли параметр username и возвращает -1.PHP skipping if block

PHP код:

$connection = mysqli_connect('127.0.0.1', 'root', 'root', 'default'); 
if(mysqli_connect_errno()) stop('2'); 

if(isset($_POST['username']) == true) { 
    if(isset($_POST['password']) == true) { 

     $username = mysqli_escape_string($connection, $_POST['username']); 
     $password = mysqli_escape_string($connection, $_POST['password']); 

     $query = mysqli_query($connection, "SELECT username,password,usersalt FROM Users WHERE username='$username';"); 

     if($result = $query) { 
      while($row = mysqli_fetch_row($result)) { 
       if($username == $row[0]) { 
        $password = sha1($password.$row[2]); 

         if($password == $row[1]) { 
          stop('5'); 
         } 

        stop('4'); 
       } else { stop('3'); } 
      } 
     } 
    } else { stop('1'); } 
} else { stop('0'); } 

stop('-1'); // Returns at this no matter what. 

function stop($m) { global $connection; 
    mysqli_close($connection); 
    exit($m); 
} 

VB код:

Public Function Login(Username As String, Password As String) As Int32 
    Try 
     If Username Is Nothing Then Return 0 
     If Password Is Nothing Then Return 1 

     Console.WriteLine("Establishing connection to login server") 

     Dim Request As WebRequest = WebRequest.Create(Server & APIRequest.Login) 
     Request.Method = "POST" 
     Request.ContentType = "application/x-www-form-urlencoded" 

     Dim Content As Byte() = Encoding.UTF8.GetBytes(String.Format("username={0}&password={1}", Username, Password)) 
     Request.ContentLength = Content.Length 

     Console.WriteLine("Passing credentials to server") 

     Dim DataStream As Stream = Request.GetRequestStream() 
     DataStream.Write(Content, 0, Content.Length) 
     DataStream.Close() 

     Dim Response As WebResponse = Request.GetResponse() 
     DataStream = Response.GetResponseStream() 

     Console.WriteLine("Getting server response") 

     Dim Reader As New StreamReader(DataStream) 
     Dim ResponseString As String = Reader.ReadToEnd 

     Reader.Close() 
     DataStream.Close() 
     Response.Close() 

     If ResponseString IsNot Nothing Then 
      Dim int As Int32 = -1 
      Integer.TryParse(ResponseString, int) 

      Console.WriteLine("Server response: {0}", int) 

      Return int 
     End If 
    Catch Exception As Exception 
    End Try 

    Console.WriteLine("Unknown error occurred.") 
    Return -1 
End Function 

VB Выход:

Establishing connection to login server 
Passing credentials to server 
Getting server response 
Server response: -1 

UPDATE

Я Резолв ред ошибка, которая случилось быть выброшен на линии:
while($row = mysqli_fetch_row($result)) {

Я заменил эту строку кода с:
$row = mysqli_fetch_row($result);

+0

Привет, не могли бы вы рассказать мне, что именно вы делаете с VB и php? –

+0

Я спрашиваю об этом из любопытства. –

ответ

0

Изменить этот

$connection = mysqli_connect('127.0.0.1', 'root', 'root', 'default'); 
if($connection->connect_errno()) stop('2');//add connection name 

Краткая

  1. Добавить $connection->
  2. Изменить этот connect_errno()
0

Я разрешил ошибку, которая произошла быть выброшен на линии:
while($row = mysqli_fetch_row($result)) {

Я заменил эту строку кода с:
$row = mysqli_fetch_row($result);