2015-08-18 70 views
-1

让我开始说我已经阅读了大约15个类似的线程在这里和其他网站试图解决我的问题发布之前。我试图用一些PHP和MySQL测试网站。一些信息:警告:mysqli_query()期望参数1是mysqli,给出的字符串

我建立了本地托管的站点,然后导出到000 webhost。为了测试php和mysql的功能,这甚至是必要的吗?我本地有一个mysql数据库。这会造成问题吗?

我有两个问题。

  1. 在运行任何PHP脚本,我得到以下警告页面:

警告:虚拟()已经被禁用在/home/a2575478/public_html/Login.php安全原因线2

警告:mysqli_query()预计参数1是mysqli的,在/home/a2575478/public_html/Login.php空给出上线37

警告:mysqli_error()预计参数1至被mysqli的,空在/home/a2575478/public_html/Login.php给出线37

我知道这些警告给mysql_ *函数关系被弃用,但我有麻烦固定弃用的功能

现在,当我尝试访问本地网页时,我得到的是“网页不可用”错误。是由于错误或只是试图在本地运行PHP?

该网站可达here

让我知道如果你需要任何更多的信息。

下面的代码。

的login.php

<?php @session_start(); ?> 
    <?php virtual('/Connections/logincon.php'); ?> 
    <?php 
    if (!function_exists("GetSQLValueString")) { 
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    { 
     if (PHP_VERSION < 6) { 
     $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; 
     } 

     $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); 

     switch ($theType) { 
     case "text": 
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
      break;  
     case "long": 
     case "int": 
      $theValue = ($theValue != "") ? intval($theValue) : "NULL"; 
      break; 
     case "double": 
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; 
      break; 
     case "date": 
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
      break; 
     case "defined": 
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; 
      break; 
     } 
     return $theValue; 
    } 
    } 


    $query_Login = "SELECT * FROM `user`"; 
    $Login = mysqli_query($logincon,$query_Login) or die(mysqli_error($logincon)); 
    $row_Login = mysql_fetch_assoc($Login); 
    $totalRows_Login = mysql_num_rows($Login); 
    mysqli_select_db($database_logincon, $logincon); 
    ?> 
    <?php 
    // *** Validate request to login to this site. 
    if (!isset($_SESSION)) { 
     session_start(); 
    } 

    $loginFormAction = $_SERVER['PHP_SELF']; 
    if (isset($_GET['accesscheck'])) { 
     $_SESSION['PrevUrl'] = $_GET['accesscheck']; 
    } 

    if (isset($_POST['Username'])) { 
     $loginUsername=$_POST['Username']; 
     $password=$_POST['Password']; 
     $MM_fldUserAuthorization = "UserLevel"; 
     $MM_redirectLoginSuccess = "/Account.php"; 
     $MM_redirectLoginFailed = "/Login.php"; 
     $MM_redirecttoReferrer = true; 
     mysql_select_db($database_logincon, $logincon); 

     $LoginRS__query=sprintf("SELECT Username, Password, UserLevel FROM `user` WHERE Username=%s AND Password=%s", 
     GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

     $LoginRS = mysql_query($LoginRS__query, $logincon) or die(mysql_error()); 
     $loginFoundUser = mysql_num_rows($LoginRS); 
     if ($loginFoundUser) { 

    $loginStrGroup = mysql_result($LoginRS,0,'UserLevel'); 

    if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();} 
    //declare two session variables and assign them 
    $_SESSION['MM_Username'] = $loginUsername; 
    $_SESSION['MM_UserGroup'] = $loginStrGroup;  

    if (isset($_SESSION['PrevUrl']) && true) { 
     $MM_redirectLoginSuccess = $_SESSION['PrevUrl']; 
    } 
    header("Location: " . $MM_redirectLoginSuccess); 
    } 
    else { 
    header("Location: ". $MM_redirectLoginFailed); 
    } 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<link href="CSS/Layout.css" rel="stylesheet" type="text/css" /> 
<link href="CSS/Menu.css" rel="stylesheet" type="text/css" /> 
<link href="CSS/Menu.css" rel="stylesheet" type="text/css" /> 
<link href="/SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" /> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script src="/SpryAssets/SpryValidationTextField.js" type="text/javascript"></script> 
</head> 

<body> 
<div id="Holder"> 
<div id="Header"></div> 
<div id="NavBar"> 
    <nav> 
     <ul> 
      <li><a href="Login.php">Login</a></li> 
      <li><a href="Register.php">Register</a></li> 
      <li><a href="ForgotPassword.php">Forgot Password</a></li> 
     </ul> 
    </nav> 
</div> 
<div id="Content"> 
    <div id="PageHeading"> 
     <h1>Home Page </h1> 
    </div> 
    <div id="ContentLeft"> 
     <h2>This is a test page for a project in progress</h2> 
     <p>&nbsp;</p> 
     <h6>A work in progress. </h6> 
    </div> 
    <div id="ContentRight"> 
     <form id="form1" name="form1" method="POST" action="<?php echo $loginFormAction; ?>"> 
     <span id="sprytextfield1"> 
     <label for="LoginForm"></label> 
     <span class="textfieldRequiredMsg">A value is required.</span></span> 
     <table width="400" border="0" align="center"> 
      <tr> 
      <td><h6><span id="sprytextfield2"> 
       <label for="Username"></label> 
       Username:<br /> 
       <br /> 
       <input name="Username" type="text" class="StyleTxtField" id="Username" /> 
       </span></h6> 
      <span><span class="textfieldRequiredMsg">A value is required.</span></span></td> 
      </tr> 
      <tr> 
      <td>&nbsp;</td> 
      </tr> 
      <tr> 
      <td><h6><span id="sprytextfield3"> 
       <label for="Password"></label> 
       Password:<br /> 
       <br /> 
       <input name="Password" type="text" class="StyleTxtField" id="Password" /> 
       </span></h6> 
      <span><span class="textfieldRequiredMsg">A value is required.</span></span></td> 
      </tr> 
      <tr> 
      <td>&nbsp;</td> 
      </tr> 
      <tr> 
      <td><input type="submit" name="LoginButton" id="LoginButton" value="Login" /></td> 
      </tr> 
      <tr> 
      <td>&nbsp;</td> 
      </tr> 
      </table> 
     </form> 
    </div> 
</div> 
<div id="Footer"> </div> 

</div> 
<script type="text/javascript"> 
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1"); 
var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2"); 
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3"); 
</script> 
</body> 
</html> 
<?php 
mysql_free_result($Login); 
?> 

Logincon.php,管理数据库连接

<?php 
# FileName="Connection_php_mysql.htm" 
# Type="MYSQL" 
# HTTP="true" 
$hostname_logincon = "172.16.1.72:3306"; 
$database_logincon = "logindb"; 
$username_logincon = "root"; 
$password_logincon = "boombox"; 
$logincon = mysql_pconnect($hostname_logincon, $username_logincon, $password_logincon) or trigger_error(mysql_error(),E_USER_ERROR); 
?> 

预先感谢任何答复

+0

您正在混合驱动程序。 'Mysql'' ='mysqli'。例如'$ Login = mysqli_query($ logincon,$ query_Login)'< - 'mysqli'然后...'$ row_Login = mysql_fetch_assoc($ Login);'你用'mysql_'然后同样的驱动' $ totalRows_Login = mysql_num_rows($ Login);'然后回到'mysqli','mysqli_select_db($ database_logincon,$ logincon);' – chris85

+0

错误正好说明问题是什么 –

+0

用'include('不管怎么样,我都会使用'virtual()'(禁用,因为错误信息中提到) –

回答

2

你混合mysqlmysqli功能。你不能那样做。 logincon.php需要使用mysqli_connect,而不是mysql_pconnect

$logincon = mysqli_connect($hostname_logincon, $username_logincon, $password_logincon, $database_logincon) or trigger_error(mysqli_connect_error(),E_USER_ERROR); 

,并在主脚本,你应该使用mysqli_real_escape_string,而不是mysql_real_escape_string

$theValue = myqsli_real_escape_string($logincon, $theValue); 

而且你必须使用mysqli_fetch_assocmysqli_num_rows

+0

感谢您的回复,添加了所有更改,仍然有错误, – boombeatbob

+0

如果'include'失败,则会阻止脚本的其余部分正常工作。你需要弄清楚为什么它找不到脚本。也许问题是它应该是'Logincon.php'而不是'logincon.php'。 – Barmar

+0

现在我收到了一组新的错误。该问题似乎是与任一logincon脚本或它的信息的传: '说明:未定义变量:用C logincon:\ XAMPP \ htdocs中\上线的login.php 11 警告:mysqli_real_escape_string()预计参数1为mysqli,null在第11行的C:\ xampp \ htdocs \ Login.php中给出' – boombeatbob

0

最后我只是绕过将mysql_ *函数更改为mysqli_ *函数。我的问题是现在脚本和我的Mysql数据库之间。我会提出一个更相关的新问题。

再次感谢您的帮助。

相关问题