上下文请求地址无效错误
来源:2-4 后台登录的实现(二)
SuGi
2020-05-20 05:41:44
老师您好,请帮我看一下,我的在mysql中创建的库和表数据按照老师后来的方式测试都正常。

但是登录时出现了请求地址无效的错误。请帮我看下是什么原因呢?谢谢!!


db.connect.php
<?php
function connect(){
date_default_timezone_set('PRC');
$config = require dirname(__FILE__).'/config.php';
$mysqli = @mysqli_connect(
$config['DB_HOST'].':'.$config['DB_POST'],
$config['DB_USER'],
$config['DB_PASS'],
$config['DB_NAME']
);
if (!$mysqli){
echo 'Could not connect: ' . iconv('gbk', 'utf-8', mysqli_connect_error());
}else{
echo 'Connect:Access ';
}
//or die('Connect Error:'.mysqli_connect_error().'-'.mysqli_connect_error());
mysqli_set_charset($mysqli,$config['DB_CHARSET']);
return $mysqli;
}
function queryOne($sql){
$mysqli = connect();
$result = mysqli_query($mysqli,$sql);
$data = [];
if($result && mysqli_num_rows($result) >0){
$data = mysqli_fetch_assoc($result);
}
return $data;
}
function getDBPrefix(){
$config = require dirname(__FILE__).'/config.php';
return $config['DB_PREFIX'];
}
function execute($sql){
$mysqli = connect();
mysqli_query($mysqli,$sql);
return mysqli_affected_rows($mysqli) > 0;
}config.php
<?php
return[
'DB_HOST' => '127.0.0.1',
'DB_PORT' => '3306',
'DB_USER' => 'root',
'DB_PASS' => 'xxxx',
'DB_NAME' => 'dbmall',
'DB_PREFIX' => 'mall_',
'DB_CHARSET' => 'utf8',
];
?>
tools.func.php
<?php
function setSession($key,$data,$prefix = ''){
session_id() || @session_start();
if(!empty($prefix)) {
$_SESSION[$prefix][$key] = $data;
}else{
$_SESSION[$key] = $data;
}
}
function getSession($key,$prefix = ''){
session_id() || @session_start();
if(!empty($prefix)){
return isset($_SESSION[$prefix][$key]) ? $_SESSION[$prefix][$key] : [];
}else{
return isset($_SESSION[$key]) ? $_SESSION[$key] : [];
}
}
function deleteSession($key,$prefix = ''){
session_id() || @session_start();
if(!empty($prefix)) {
$_SESSION[$prefix][$key] = null;
}else{
$_SESSION[$key] = null;
}
}
function setInfo($info){
setSession('info',$info,'system');
}
function getInfo(){
$info = getSession('info','system');
deleteSession('info','system');
return $info;
}
function hasInfo(){
return !empty(getSession('info','system'));
}
login.php
<?php
require '../db.connect.php';
require '../tools.func.php';
if(!empty($_POST['adminuser'])){
//POST
$prefix = getDBPrefix();
$adminuser = $_POST['adminuser'];
$adminpsw = md5($_POST['adminpsw']);
$sql = "SELECT id,adminuser FROM {$prefix}admin
WHERE adminuser = '$adminuser'
AND adminpsw = '$adminpsw'";
$res = queryOne($sql);
if($res){
//no error
//Session
setSession('admin',
['adminuser' => $adminuser,'id' => $res['id']]
);
$login_at = date('Y-m-d H:i:s');
$ip = $_SERVER['REMOTE_ADDR'] == '::1' ? '127.0.0.1' : $_SERVER['REMOTE_ADDR'];
$login_ip = ip2long($ip);
$sql = "UPDATE {$prefix}admin
SET login_at = '$login_at',login_ip = '$login_ip'
WHERE id='{$res['id']}";
execute($sql);
//jump to index.php
header('location:index.php');
}else{
//error
setInfo('Wrong username or password...');
}
}
?>
其他的代码跟老师的一致。1回答
SuGi
提问者
2020-05-20
自查已找到错误>_<
马虎大意将$mysqli中$config['DB_PORT']写错,之后尝试连接mysql出现mysqli_connect(): The server requested authentication method unknown to the的错误,查了一下发现是mysql8密码机制换成了cha2导致的。于是在命令行更改后一切正常...
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxxx';
相似问题