php isset中的非法偏移类型或为空
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php isset中的非法偏移类型或为空,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6329字,纯文字阅读大概需要10分钟。
内容图文
![php isset中的非法偏移类型或为空](/upload/InfoBanner/zyjiaocheng/827/357c9e4531bf44ba80ea15a6cf1fb69a.jpg)
我有这个代码最初工作,但重新启动计算机后无法正常工作.
我得到的错误是:
Warning: Illegal offset type in isset or empty in D:\xampp\htdocs\cookieboylive\classes\Session.php on line 4
我的网站上有3个文件 – 索引,登录,注册.索引页面检查用户是否已登录,但我不认为它与问题有任何关系.
这是当前的代码:
主要注册/ login.php页面
require_once 'core/init.php';
if(Input::exists()) {
if(Token::check(Input::get('token'))) {
$validate = new Validate();
$validation = $validate->check($_POST, array(
'username' => array('required' => true),
'password' => array('required' => true)
));
if($validation->passed()) {
$user = new User();
$login = $user->login(Input::get('username'), Input::get('password'));
if($login) {
Redirect::to('index.php');
} else {
echo '<p>Sorry, login failed.</p>';
}
} else {
foreach($validation->errors() as $error) {
echo $error, '<br>';
}
}
}
}
if(Input::exists()) {
if(Token::check(Input::get('token'))) {
$validate = new Validate();
$validation = $validate->check($_POST, array(
'username' => array(
'required' => true,
'min' => 2,
'max' => 20,
'unique' => 'users'
),
'password' => array(
'required' => true,
'min' => 6
),
'password_again' => array(
'required' => true,
'matches' => 'password'
),
'name' => array(
'required' => true,
'min' => 2,
'max' => 50
)
));
if($validation->passed()) {
$user = new User();
$salt = Hash::salt(32);
try {
$user->create(array(
'username' => Input::get('username'),
'password' => Hash::make(Input::get('password'), $salt),
'salt' => $salt,
'name' => Input::get('name'),
'joined' => date('Y-m-d H:i:s'),
'group' => 1
));
Session::flash('home', 'Register SUCCESS');
Redirect::to('index.php');
} catch(Exception $e) {
die($e->getMessage());
}
} else {
foreach($validation->errors() as $error) {
echo $error, '<br>';
}
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="styles/register_login_styles.css">
<link rel="stylesheet" type="text/css" href="styles/animate-custom.css">
</head>
<body>
<div class="container">
<div id="container_demo" >
<a class="hiddenanchor" id="toregister"></a>
<a class="hiddenanchor" id="tologin"></a>
<div id="wrapper">
<div id="login" class="animate form">
<form action="" method="post">
<div class="field">
<h1>Log in</h1>
<p>
<label for="username" class="uname" data-icon="u" >Username </label>
<input id="username" name="username" required="required" type="text" placeholder="Username" autocomplete="off">
</p>
<p>
<label for="password" class="youpasswd" data-icon="p">Password </label>
<input id="password" name="password" required="required" type="password" placeholder="Password">
</p>
<p class="keeplogin">
<input type="checkbox" name="loginkeeping" id="loginkeeping" value="loginkeeping">
<label for="loginkeeping">Keep me logged in</label>
</p>
<input type="hidden" name="token" value="<?php echo Token::generate(); ?>">
<p class="login button">
<input type="submit" value="Login">
</p>
<p class="change_link">
Not a member yet ?
<a href="#toregister" class="to_register">Join us</a>
</p>
</form>
</div>
</div>
<div id="register" class="animate form">
<form action="" method="post">
<h1> Sign up </h1>
<p>
<label for="username" class="uname" data-icon="u">Username</label>
<input id="username" value="<?php echo escape(Input::get('username')); ?>" name="username" required="required" type="text" placeholder="Username" autocomplete="off">
</p>
<p>
<label for="password" class="youpasswd" data-icon="p">Your password </label>
<input id="password" name="password" required="required" type="password" placeholder="Password">
</p>
<p>
<label for="password_again" class="youpasswd" data-icon="p">Please confirm your password </label>
<input id="password_again" name="password_again" required="required" type="password" placeholder="Password again">
</p>
<p>
<label for="name" class="youmail" data-icon="n" >Name</label>
<input id="name" name="name" value="<?php echo escape(Input::get('name')); ?>" required="required" type="text" placeholder="Name" autocomplete="off">
</p>
<input type="hidden" name="token" value="<?php echo Token::generate(); ?>">
<p class="signin button">
<input type="submit" value="Sign up">
</p>
<p class="change_link">
Already a member ?
<a href="#tologin" class="to_register"> Go and log in </a>
</p>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
session.php文件
<?php
class Session {
public static function exists($name) {
return (isset($_SESSION[$name])) ? true : false;
}
public static function put($name, $value) {
return $_SESSION[$name] = $value;
}
public static function get($name) {
return $_SESSION[$name];
}
public static function delete($name) {
if(self::exists($name)) {
unset($_SESSION[$name]);
}
}
public static function flash($name, $string = '') {
if(self::exists($name)) {
$session = self::get($name);
self::delete($name);
return $session;
} else {
self::put($name, $string);
}
}
}
user.php的
<?php
class User {
private $_db,
$_data,
$_sessionName,
$_isLoggedIn;
public function __construct($user = null) {
$this->_db = DB::getInstance();
$this->_sessionName = Config::get('session/session_name');
if(!$user) {
if(Session::exists($this->_sessionName)) {
$user = Session::get($this->_sessionName);
if($this->find($user)) {
$this->_isLoggedIn = true;
} else {
// Pr0cess logout
}
} else {
$this->find($user);
}
}
}
public function create($fields = array()) {
if(!$this->_db->insert('users', $fields)) {
throw new Exception('There was a problem creating an account.');
}
}
public function find($user = null) {
if($user) {
$field = (is_numeric($user)) ? 'id' : 'username';
$data = $this->_db->get('users', array($field, '=', $user));
if($data->count()) {
$this->_data = $data->first();
return true;
}
}
return false;
}
public function login($username = null, $password = null) {
$user = $this->find($username);
if($user) {
if($this->data()->password === Hash::make($password, $this->data()->salt)) {
Session::put($this->_sessionName, $this->data()->id);
return true;
}
}
return false;
}
public function data() {
return $this->_data;
}
public function isLoggedIn() {
return $this->_isLoggedIn;
}
}
解决方法:
我尝试了上面提出的大多数解决方案.事实上,答案不在于拼写,而在于如上所述,exists函数中的$name变量实际上是一个数组.
公共静态函数存在($name){
return(isset($_ SESSION [$name]))?真假;
}
简单的解决方法是将[0]追加到[$name],使它成为[$name] [0],它返回与之关联的值和您想要查看的值.适合我.为什么它在视频中起作用,我无法弄清楚;可能是一个配置的东西.
内容总结
以上是互联网集市为您收集整理的php isset中的非法偏移类型或为空全部内容,希望文章能够帮你解决php isset中的非法偏移类型或为空所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。