我正在使用 PHP、HTML 和 JavaScript 创建登录页面。我创建了一个 MySQL 数据库 myDB
和一张 table platform_admins
包含可以访问平台的用户。
但是,一旦我单击登录按钮,我就会收到此错误:
Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /opt/lampp/htdocs/WebPlatform/include/DatabaseConector.php:28 Stack trace: #0 /opt/lampp/htdocs/WebPlatform/include/DatabaseConector.php(57): DatabaseConector::ConectToDatabase() #1 /opt/lampp/htdocs/WebPlatform/include/User.php(40): DatabaseConector::ExecuteQuery('SELECT id FROM ...') #2 /opt/lampp/htdocs/WebPlatform/login.php(14): User::checkLogin('user', '1a1dc91c907325c...') #3 /opt/lampp/htdocs/WebPlatform/pages.php(22): include('/opt/lampp/htdo...') #4 /opt/lampp/htdocs/WebPlatform/index.php(8): include('/opt/lampp/htdo...') #5 {main} thrown in /opt/lampp/htdocs/WebPlatform/include/DatabaseConector.php on line 28
错误表明函数
mysql_connect()
未定义,但据我了解它是 built-in function in PHP .我不知道如何解决这个错误。更新:
我全部替换
mysql_*
通过 mysqli_*
现在我收到了这些警告。似乎我无法连接到数据库:Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in /opt/lampp/htdocs/WebPlatform/include/User.php on line 42 Warning: session_destroy(): Trying to destroy uninitialized session in /opt/lampp/htdocs/WebPlatform/login.php on line 30
登录.php
<?php
@session_start();
$error = 0;
if (isset($_POST["user"]) && isset($_POST["pass"])) {
include_once 'include/User.php';
$user = $_POST['user'];
$pass = $_POST['pass'];
$error = 0;
$user = User::checkLogin($user, md5($pass));
if(!is_object($user) && $user == 0){
$error = 1;
session_destroy();
}
if($error == 0){
$_SESSION['loged'] = 1;
$login = TRUE;
$_SESSION['userid'] = $user->id;
$_SESSION['username'] = $user->name." ".$user->surename;
header("Location: index.php?pagina=1");
}
else{
$error = 1;
session_destroy();
}
}
?>
<div class="form_login">
<form action="index.php?pagina=0" method="POST">
<div class="form_login_line">
<div class="form_login_txt">
Username:
</div>
<div class="form_login_input">
<input type="text" name="user" size="15" value="user"/>
</div>
</div>
<div class="form_login_line">
<div class="form_login_txt">
Password:
</div>
<div class="form_login_input">
<input type="password" name="pass" id="pass" size="15" value="pass"/>
</div>
</div>
<div class="form_login_line">
<div class="form_login_submit">
<input id="input_login_error" type="button" value="Login" onclick="submitForm()"/>
</div>
</div>
</form>
<div id="login_error">The username or password are incorrect or don't have access permissions.</div>
</div>
<?php if($error == 1): ?>
<script>$("#login_error").show();</script>
<?php endif;?>
<script>
page_name("Login");
function submitForm(){
//$("#pass").val(sha1($("#pass").val()));
$('form').prepend('<input type="submit" id="submit5548" style="display: none"/>');
$("#submit5548").click();
}
</script>
用户.php
<?php
if (!function_exists("my_autoload"))
{
function my_autoload($class_name) {
require_once "include/$class_name.php";
}
}
spl_autoload_register('my_autoload');
class User {
public $username;
public $name;
public $surename;
public $email;
public $id;
function __construct($id = -1) {
if($id != -1) {
$query = "SELECT * FROM platform_admins WHERE id = $id";
$res = DatabaseConector::ExecuteQuery($query);
while($row = mysql_fetch_array($res)){
$this->id = $row['id'];
$this->username = $row['username'];
$this->name = $row['name'];
$this->surname = $row['surename'];
$this->email = $row['email'];
}
}
}
/**
*
* Check the users exist into Database.
* @param unknown_type $user User
* @param unknown_type $pass Encrypted Password
* @return User object or 0 if don't exist
*/
static function checkLogin($user, $pass){
$query = "SELECT id FROM platform_admins WHERE username LIKE '$user' AND pass LIKE '$pass'";
$res = DatabaseConector::ExecuteQuery($query);
$return = 0;
while ($row = mysql_fetch_array($res)){
$return = new User($row['id']);
}
return $return;
}
public function serialize(){
return Tools::SerializeAndEncode($this);
}
}
?>
数据库连接器.php
<?php
if (!function_exists("__autoload"))
{
function __autoload($class_name){
require_once 'include/'. $class_name . '.php';
}
}
/**
*
* Connector to Database
*
*/
class DatabaseConector {
/**
*
* Connect to database
* @return Conection
*/
private static function ConectToDatabase(){
$dbhost = Config::$DBhost;
$dbname = Config::$DBname;
$dbuser = Config::$DBuser;
$dbpass = Config::$DBpass;
$db = new DatabaseConector();
$con = @mysql_connect($dbhost,$dbuser,$dbpass);
@mysql_select_db($dbname,$con);
if(mysql_errno($con))
{
Firelog::showError("Error to BDD conect: ".mysql_error($con));
}
return $con;
}
/**
*
* Diconect to databae
* @param unknown_type $con Connection
*/
private static function DisconectDatabase($con){
@mysql_close($con);
}
/**
*
* Execute query in bdd
* @param unknown_type $query String with query
* @return Result of the execute query
*/
public static function ExecuteQuery($query){
if($query == ""){
Firelog::showError("The query is empty");
return null;
}
$con = DatabaseConector::ConectToDatabase();
if(Tools::startsWith($query, "INSERT") || Tools::startsWith($query, "UPDATE") || Tools::startsWith($query, "DELETE"))
Firelog::showWarn(" -- [QUERY]: ".$query);
else
Firelog::showLog(" -- [QUERY]: ".$query);
$res = @mysql_query($query,$con);
if(mysql_errno($con))
{
Firelog::showError("Error to BDD conect: ".mysql_error($con));
}
DatabaseConector::DisconectDatabase($con);
return $res;
}
}
连接数据库.php
<?php
$urldb = "localhost";
$namedb = "myDB";
$userdb = "root";
$passdb = "123";
function connectDB()
{
global $urldb, $namedb, $userdb, $passdb;
$condb = mysql_connect($urldb, $userdb, $passdb);
mysql_select_db($namedb, $condb);
return $condb;
}
function closeDB($condb)
{
mysql_close($condb);
}
function ejecutar_query($sql)
{
$condb = connectDB();
$res = mysql_query($sql);
closeDB($condb);
return $res;
}
function ejecutar_query_id($sql)
{
$condb = connectDB();
mysql_query($sql);
$id = mysql_insert_id($condb);
closeDB($condb);
return $id;
}
?>
最佳答案
在较新版本的 PHP (7+) 上,您必须 use mysqli
instead .从广义上讲,您可以更改每个 mysql_*
函数到 mysqli_*
让它工作。例如,mysql_connect();
将变为 mysqli_connect();
等等。
关于javascript - 使用 PHP : Fatal error: Uncaught Error: Call to undefined function mysql_connect() 创建登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44304426/