[英]Simple PHP/MYSQL Log in code only working for some people/clients
TL:DR:此代碼對某些人有用,它可以執行,登錄並可以正常工作,但是對於某些人來說,它僅顯示0 results
(//在Example1的第二個php代碼中進行了注釋)
我現在使用的是簡單的登錄表單,情況非常令人沮喪,問題是我的“網絡應用”登錄表單僅對某些人有效,而對某些人卻無效。
我只在這里發布了php代碼,發現它沒有按預期工作。 請注意,由於我努力尋找可能的原因並從Google搜索結果中解決該問題,因此此代碼已作了許多更改。 因此,我評論了我基本上不知道為什么這樣做的線索,但我只是這么做了,因為我在某個地方閱讀了它可能會有所幫助。
這些代碼行包含在兩個文件中文件的開頭。
<?php session_start();
ob_start();
?>
驗證PHP:
<?php
$servername = "localhost";
$username = "****";
$password = "****";
$dbname = "*****";
// Get values
$user = $_POST['username'];
$pwd = $_POST['password'];
//pass values
$_SESSION['login_value_user'] = $_POST['username'];
$_SESSION['login_value_password'] = $_POST['password'];
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT username, password FROM users WHERE username='$user' AND password='$pwd'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
if($user != 'lloki'){
header('Location: http://bluebotdev.com/nav/workers.php');
ob_get_clean(); // questionable google search solution
exit();// questionable google search solution
} else{
header('Location: http://bluebotdev.com/php/lloki.php');
ob_get_clean(); // questionable google search solution
exit(); // questionable google search solution
}
}
} else {
echo "
<div id='error'>
<div class='container-fluid'>
<div class='row'>
<div class='col-xs-10'>
<a class='btn btn-danger extra-padding' href='../index.html'>Error! Wrong password or username!</a>
</div>
</div>
</div>
</div> ";
}
$conn->close();
?>
經過驗證的PHP代碼:
<?php
$servername = "localhost";
$username = "****";
$password = "*****";
$dbname = "*****";
// Get values
$user = $_SESSION['login_value_user'];
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, name, surname,phone,address,email,workhours,status FROM workers WHERE name='$user' ";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<table class='table'><tr><th>ID</th><th>Name</th><th>Surname</th><th>Phone</th><th>Address</th><th>E-mail</th><th>Status</th></tr>";
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr><td>".$row["id"]."</td><td>".$row["name"]."</td><td>".$row['surname']."</td><td>".$row['phone']."</td><td>".$row['address']."</td><td>".$row['email']."</td><td>".$row['status']."</td></tr>";
$dummy_name = $row['name'];
$dummy_surname = $row['surname'];
}
echo "</table>";
} else {
echo "0 Results"; //Example 1
}
session_destroy(); // questionable google search solutions
$conn->close();
?>
因此,為了清楚起見,這段代碼在我的托管服務器上進行了測試:
0 results response
我真的希望有人能啟發我這里發生的事情,並希望能指導我解決這個問題。
附注-經過5天不間斷的Google搜索解決方案及其原因后,我來到了Stackoverflow,但老實說我已經用光了搜索詞,無法立即搜索。
就像您說的那樣,代碼看起來不錯,因此您必須確切地找到為什么它返回0結果的原因:也許$user
變量為空,它具有意外值,DB調用失敗,等等。
在PHP中,一個不錯的選擇是創建一個包含所有相關信息的日志(只是一個文本文件,例如標准的PHP日志),您應該包括:
$user
的值(最好是$_SESSION
數組的var_dump()
)和DB調用的結果(均為mysqli->info
和mysqli->error
)。 我還會記錄成功的操作,因為有時它們可以提供有關失敗模式的線索。
一旦有了第一個線索,就可以在日志中添加更多信息:例如,如果問題是$_SESSION['login_value_user']
為空,請在使用或更改會話的所有頁面中記錄會話值,以查找何時價值丟失。
最后一點,您應該使日志功能盡可能強大,這樣,例如,當您嘗試記錄一些尚未定義的變量時,就不會引入額外的錯誤或丟失某些條目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.