上下文请求地址无效错误
来源: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';
相似问题