所以,我使用PHP从头构建了一个网站,并使用WAMP服务器进行测试。
在本地主机上一切正常,但是将代码上传到服务器后,所有涉及数据库连接的内容都无法正常工作。
我已经检查了php中的POST是否在服务器上工作,并且它正在工作。我通过谷歌搜索更改了一些php.ini
配置,我已经完成了这些操作:
register_globals = off; (was default)
allow_url_fopen = on; (was default)
magic_quotes_gpc = off; (was default)
表单代码
http://i.imgur.com/k5kMx9N.png
类中的登录函数
function LoginUser($UserName, $Password)
{
//Protect from SQL Injection
$clientusername = stripslashes(mysql_real_escape_string($UserName));
$clientpassword = stripslashes(mysql_real_escape_string($Password));
$clientusername = trim($clientusername);
$clientpassword = trim($clientpassword);
if($clientusername != "" && $clientusername != "Username" && $clientpassword != "" && $clientpassword != "Password")
{
$this->ConnectToMySQL();
$sql = "SELECT * FROM Users WHERE UserName = '" . $clientusername . "' AND Password = '" . $clientpassword . "'";
$result = mysqli_query($this->DBConnection, $sql);
mysqli_close($this->DBConnection);
// Mysql_num_row is counting table row
$count = mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count == 1){
if(!isset($_SESSION))
session_start();
$row = mysqli_fetch_array($result);
$_SESSION['ID'] = session_id();
$_SESSION['timeout'] = time();
session_write_close();
return("O seu login foi feito com sucesso.</br></br><a href='privatemenu.php'>Ir para o Menu</a>");
}
else return("Não foram encontrados utilizadores com os dados fornecidos.</br></br><a href='login.php'>Voltar á pagina de Login</a>");
}
else return("Ocorreu um erro com a entrada dos seus dados.</br></br><a href='login.php'>Voltar á pagina de Login</a>");
}
因此,问题在于该函数始终返回“Ocorreu um erro com a entrada dos seus dados”文本。我输入登录数据,点击登录按钮,发帖工作正常,我已经测试了相同的表单并在另一个页面上回显了表单中的帖子,但是该函数从未通过第一个if语句。如果有任何需要澄清的地方,请问我,以便我可以更好地解释。因为我不认为是来自函数,我还有另一个只会对数据库进行插入并完全相同的操作。而奇怪的是,数据正确地通过了页面。因此感谢Paddyd,这是完全正常工作的代码:
function LoginUser($UserName, $Password)
{
//Protect from SQL Injection
$this->ConnectToMySQL();
$clientusername = stripslashes(mysqli_real_escape_string($this->DBConnection, $UserName));
$clientpassword = stripslashes(mysqli_real_escape_string($this->DBConnection, $Password));
$clientusername = trim($clientusername);
$clientpassword = trim($clientpassword);
if($clientusername != "" && $clientusername != "Username" && $clientpassword != "" && $clientpassword != "Password")
{
$sql = "SELECT * FROM Users WHERE UserName = '" . $clientusername . "' AND Password = '" . $clientpassword . "'";
$result = mysqli_query($this->DBConnection, $sql);
mysqli_close($this->DBConnection);
// Mysql_num_row is counting table row
$count = mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count == 1){
if(!isset($_SESSION))
session_start();
$row = mysqli_fetch_array($result);
$_SESSION['ID'] = session_id();
$_SESSION['timeout'] = time();
session_write_close();
return("O seu login foi feito com sucesso.</br></br><a href='privatemenu.php'>Ir para o Menu</a>");
}
else return("Não foram encontrados utilizadores com os dados fornecidos.</br></br><a href='login.php'>Voltar á pagina de Login</a>");
}
else return("Ocorreu um erro com a entrada dos seus dados.</br></br><a href='login.php'>Voltar á pagina de Login</a>");
}
session_start();
。通常这应该是代码的第一行之一,因为它可能会导致发送标头时出现问题。尝试删除此调用或更早地调用它。 - Paddyd