Я написал небольшой код в 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);
Привет, не могли бы вы рассказать мне, что именно вы делаете с VB и php? –
Я спрашиваю об этом из любопытства. –