我尽我所能。我不断收到查询错误,例如:mysql_query(): A link to the server could not be established
。但是,在我的网站上,我可以使用mysqli
而不是mysql
查看我上传到我的数据库的所有内容。所以我正在考虑注册/登录系统,我需要改变它。以下是适用于本地主机的代码:
connection.php:
<?php
$connect_error = "Sorry, there are some connection issues! Check back shortly!";
mysqli_connect("localhost", "root", "", "lr") or die($connect_error);
mysqli_select_db("lr");
?>
int.php:
<?php
session_start();
//error_reporting(0);
require("connect.php");
require("general.php");
require("users.php");
$errors = array();
?>
users.php:
<?php
function change_password($user_id, $password){
$user_id = (int)$user_id;
$password = md5($password);
mysql_query("UPDATE `users` SET `password` = '$password' WHERE `user_id` = $user_id");
}
function register_user($register_data){
array_walk($register_data, 'array_sanitize');
$register_data['password'] = md5($register_data['password']);
$fields = '`' . implode('`, `', array_keys($register_data)) . '`';
$data = '\'' . implode('\', \'', $register_data) . '\'';
mysql_query("INSERT INTO `users` ($fields) VALUES ($data)");
}
function user_count(){
return mysql_result (mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `active` = 1"), 0);
}
function user_data($user_id){
$data = array();
$user_id = (int)$user_id;
$func_num_args = func_num_args();
$func_get_args = func_get_args();
if ($func_get_args > 1){
unset($func_get_args[0]);
$fields = '`' . implode('`, `', $func_get_args) . '`';
$data = mysql_fetch_assoc(mysqli_query("SELECT $fields FROM `users` WHERE `user_id` = $user_id"));
return $data;
}
}
function logged_in(){
return (isset($_SESSION['user_id'])) ? true : false;
}
function user_exists($username) {
$username = sanitize($username);
return (mysql_result( mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` ='$username' "), 0) == 1) ? true : false;
}
function email_exists($email) {
$email = sanitize($email);
return (mysql_result( mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` ='$email' "), 0) == 1) ? true : false;
}
function user_active($username) {
$username = sanitize($username);
return (mysql_result( mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` ='$username' AND `active` = 1 "), 0) == 1) ? true : false;
}
function user_id_from_username ($username) {
$username = sanitize ($username);
return mysql_result(mysql_query("SELECT `user_id` FROM `users` WHERE `username` = '$username'"), 0, 'user_id');
}
function login($username, $password){
$user_id = user_id_from_username($username);
$username = sanitize($username);
$password = md5($password);
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username`='$username' AND `password`='$password'"), 0)==1) ? $user_id : false;
}
?>
现在注意mysql
而不是mysqli
中的所有内容。
general.php:
<?php
function array_sanitize(&$item){
$item = mysql_real_escape_string($item);
}
function sanitize($data){
return mysql_real_escape_string($data);
}
function output_errors($errors){
$output = array();
foreach($errors as $error){
$output[] = $error;
}
return implode('', $output);
}
?>
的login.php:
<?php
ob_start();
include("connect.php");
include("int.php");
if(empty($_POST) === false){
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) === true || empty($password) === true){
$errors[] = '<div class="error-notice">
<div class="oaerror warning">
<strong>Oops!</strong>
You need to enter a username and a passsword!
</div></div>';
} else if(user_exists($username) === false){
$errors[] = '<div class="error-notice">
<div class="oaerror info">
<strong>Hmm.</strong>
Username not found. Have you registered first?
</div></div>';
} else if(user_active($username) === false){
$errors[] = '<div class="error-notice">
<div class="oaerror warning">
<strong>Oops!</strong>
Your account is not activated! Be sure to check your mail!
</div></div>';
} else{
if (strlen($password) > 32){
$errors[] ='<div class="error-notice">
<div class="oaerror warning">
<strong>Oops!</strong>
Your password is too long!
</div></div>';
}
$login = login($username, $password);
if($login === false){
$errors[] ='<div class="error-notice">
<div class="oaerror danger">
<strong>Uh oh!</strong>
Your Username/Password is incorrect!
</div></div>';
} else{
// set the user sesssion
$_SESSION['user_id'] = $login;
// redirect user to home
header("Location: index.php");
ob_end_flush();
exit();
}
}
} else{
}
echo output_errors($errors);
if (logged_in() === true){
header("Location: index.php");
exit();
}else{
}
?>
就像我之前说的那样,我可以查看我上传到网站的所有内容,例如图片。这是代码,实际上有效:
$db = mysqli_connect("hostgator.com", "", "password", "photos");
$sql = "SELECT * FROM images ORDER BY id DESC";
$result = mysqli_query($db, $sql);
while ($row = mysqli_fetch_array($result)) {
echo "<a href='uploads/".$row['image']."' data-caption='".$row['text']."'> ";
echo "<img id='img_div' title='".$row['image']."' alt='".$row['image']."' src='uploads/".$row['image']."'/>";
//echo "<p id='img_div'>".$row['desc']."</p>";
echo "</a>";
echo'';
请注意,我使用的是mysqli_query,而不是mysql_query,它可以解决问题。无论如何我可以正确登录我的网站,因为我能够登录本地主机?这与mysql_querys有关吗?我只是不理解我的错误。
不推荐使用:mysql_real_escape_string():不推荐使用mysql扩展,将来会删除它:使用mysqli或PDO 而是在第9行的/home3/user/public_html/general.php中
警告:mysql_real_escape_string():访问被拒绝用户'用户'@'localhost'(使用密码:否) 第9行/home3/user/public_html/general.php
警告:mysql_real_escape_string():无法在第9行的/home3/user/public_html/general.php中建立指向服务器的链接
警告:mysql_result()要求参数1为资源,第48行/home3/user/public_html/users.php中给出布尔值
如果有更多信息,您只需要询问。
答案 0 :(得分:0)
我认为这个问题是由于你的服务器上的php版本。 php从PHP 7.0.0中删除了mysql
您有两个选项