Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在WAMP localhost上工作但在WebServer上不工作的PHP代码_Php_Mysql_Forms_Webserver_Localhost - Fatal编程技术网

在WAMP localhost上工作但在WebServer上不工作的PHP代码

在WAMP localhost上工作但在WebServer上不工作的PHP代码,php,mysql,forms,webserver,localhost,Php,Mysql,Forms,Webserver,Localhost,所以,我用PHP从Scrath构建了一个网站,并使用WAMP服务器进行测试 所有的东西都在本地主机上工作,但是在将代码上传到服务器后,使用数据库连接的所有东西都不工作 我已经检查了php中的帖子是否在服务器上工作,它是否正常工作,在谷歌搜索之后,我更改了一些php.ini配置,我完成了以下操作: register_globals = off; (was default) allow_url_fopen = on; (was default) magic_quotes_gpc = off; (

所以,我用PHP从Scrath构建了一个网站,并使用WAMP服务器进行测试

所有的东西都在本地主机上工作,但是在将代码上传到服务器后,使用数据库连接的所有东西都不工作

我已经检查了php中的帖子是否在服务器上工作,它是否正常工作,在谷歌搜索之后,我更改了一些
php.ini
配置,我完成了以下操作:

register_globals = off; (was default)

allow_url_fopen = on; (was default)

magic_quotes_gpc = off; (was default)
表格代码

类内的登录函数

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>");
}
函数登录用户($UserName,$Password)
{
//防止SQL注入
$clientusername=stripslashes(mysql\u real\u escape\u string($UserName));
$clientpassword=stripslashes(mysql_real_escape_string($Password));
$clientusername=trim($clientusername);
$clientpassword=trim($clientpassword);
如果($clientusername!=“”&&&$clientusername!=“Username”&&&$clientpassword!=“”&&&$clientpassword!=“Password”)
{           
$this->ConnectToMySQL();
$sql=“从用户名=”、$clientusername.”和密码=”、$clientpassword.”的用户中选择*;
$result=mysqli\u查询($this->DBConnection,$sql);
mysqli_close($this->DBConnection);
//Mysql\u num\u行是计数表行
$count=mysqli\u num\u行($result);
//若结果匹配$myusername和$mypassword,则表行必须为1行
如果($count==1){
如果(!isset($\会话))
会话_start();
$row=mysqli\u fetch\u数组($result);
$_SESSION['ID']=SESSION_ID();
$\会话['timeout']=time();
会话写入关闭();
返回(“O seu登录foi feito com successo.

”; } 否则返回(“Não foram encontrados utilizadores com os dados fornecidos.

”; } 否则返回(“Ocorreu um erro com a entrada dos seus dados.

”; }
因此,问题在于,函数总是在登录函数中返回文本“Ocorreu um erro com a entrada dos seus dados”

我写了登录数据,按了登录按钮,我用同一个表单测试过的帖子正在运行,并在另一个页面上从表单中回显帖子,但是如果先出现这种情况,该函数永远不会运行

任何帮助都将非常感谢,因为我不认为这是来自函数,我有另一个只在数据库中插入,并做完全相同的事情。奇怪的是数据正确地通过页面传递

如果这方面有什么不明白的地方,请问我,以便我能更好地解释


多亏了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>");
}
函数登录用户($UserName,$Password)
{
//防止SQL注入
$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);
如果($clientusername!=“”&&&$clientusername!=“Username”&&&$clientpassword!=“”&&&$clientpassword!=“Password”)
{           
$sql=“从用户名=”、$clientusername.”和密码=”、$clientpassword.”的用户中选择*;
$result=mysqli\u查询($this->DBConnection,$sql);
mysqli_close($this->DBConnection);
//Mysql\u num\u行是计数表行
$count=mysqli\u num\u行($result);
//若结果匹配$myusername和$mypassword,则表行必须为1行
如果($count==1){
如果(!isset($\会话))
会话_start();
$row=mysqli\u fetch\u数组($result);
$_SESSION['ID']=SESSION_ID();
$\会话['timeout']=time();
会话写入关闭();
返回(“O seu登录foi feito com successo.

”; } 否则返回(“Não foram encontrados utilizadores com os dados fornecidos.

”; } 否则返回(“Ocorreu um erro com a entrada dos seus dados.

”; }
警告:mysql\u real\u escape\u string():第461行/home/httpd/vhosts/jaimevale.com/httpdocs/config/configurations.php中用户“apache”@“localhost”(使用密码:否)的访问被拒绝

以下是导致您出现问题的原因:

$clientusername = stripslashes(mysqli_real_escape_string($UserName));
$clientpassword = stripslashes(mysqli_real_escape_string($Password));
您试图在未建立sql连接的情况下使用
mysql\u real\u escape\u string
。 在进行这些调用之前建立连接,或者使用mysql\u real\u escape\u string
的替代方法

尝试调用
$this->ConnectToMySQL()在函数的开头


编辑:
mysql\u real\u escape\u string
更改为
mysqli\u real\u escape\u string

您应该将相关代码粘贴到问题中,而不是包含指向i的链接。您是否修改了连接到服务器上数据库的凭据?是的,凭据正常,这是我测试的第一件事,在它到达
logiuser
函数中的
if
语句之前,你能回显
$clientusername
$clientpassword
吗?我刚刚注意到你调用了
session_start()在代码的中间。通常这应该是第一行代码之一,因为它可能会导致发送头出现问题。尝试删除此调用,或尽早调用它仅调用$this->ConnectToMySQL(),或者调用$this->ConnectToMySQL();添加$this->DBConnection,因为第二个参数不起作用,第一个参数给出了相同的错误,第二个:警告:mysql\u real\u escape\u string()期望参数2是resource,第462行的/home/httpd/vhosts/jaimevale.com/httpdocs/config/configurations.php中给出的对象警告:mysql\u real\u escape\u string()期望参数2是/home/h中给定的资源、对象