У меня проблема при настройке сеансов, когда я устанавливаю: $_SESSION["predefinedvar"] = "SOMETHING" Он запоминает переменную сеанса, но, однако, когда я делаю: $_SESSION = $class->somearray; Он не сохранит массив сеансов.
Я провел поиск в Интернете и попробовал первые несколько страниц Google из этого поиска: массив назначения сеанса php
Вывод аналогичен этому, когда я выполняю print_r($_SESSION) или print_r($l->details); Это вывод, который дает мне скрипт (как из $_SESSION, так и из $l->details)
Array
(
[1] => Array
(
[id] => 1
[username] => Usernamehere
[password] => EnCryptedPasswordHere
[mail] => [email protected]
[ip] => ::1
[registerred] => 1349111531
[loggedin] => 0
[vip] => 0
)
[2] => Array
(
[id] => 1
[city] => 1
[family] => 0
[pm] => 0
[mod] => 0
)
[3] => Array
(
[id] => 1
[url] => images/pb/1.png
)
[4] => Array
(
[id] => 1
[rank] => 1
[subrank] => 5000
)
[5] => Array
(
[id] => 1
[hp] => 100
[str] => 0
[def] => 0
)
[6] => Array
(
[id] => 1
[money] => 0
[bank] => 0
[bullets] => 0
[points] => 0
)
)
В настоящее время у меня есть следующие коды
логин.c.php
<?php
if(!$required) die("Du har ikke adgang til denne filen.");
class login {
var $username, $password;
var $details;
var $salt = "SALTHIDDEN";
var $error;
var $justcheck;
function onPost($username, $password, $justcheck = FALSE) {
if($justcheck) $this->justcheck = $justcheck;
if(!$username || !$password) die("Du må skrive inn både brukernavn og passord.");
$this->username = htmlspecialchars(addslashes($username));
$this->password = sha1(md5($this->salt . $password));
}
function checkDetails() {
$query = mysql_query("SELECT * FROM users WHERE username = '".$this->username."' AND password = '".$this->password."' LIMIT 1");
$num = mysql_num_rows($query);
if($num > 0) {
$this->details[1] = mysql_fetch_assoc($query);
return TRUE;
}
else {
$this->error[] = "Feil brukernavn eller passord.";
return FALSE;
}
}
function getEverything() {
$this->details[2] = mysql_fetch_assoc(mysql_query("SELECT * FROM user_c WHERE id='".$this->details[1][id]."' LIMIT 1"));
$this->details[3] = mysql_fetch_assoc(mysql_query("SELECT * FROM user_p WHERE id='".$this->details[1][id]."' LIMIT 1"));
$this->details[4] = mysql_fetch_assoc(mysql_query("SELECT * FROM user_r WHERE id='".$this->details[1][id]."' LIMIT 1"));
$this->details[5] = mysql_fetch_assoc(mysql_query("SELECT * FROM user_s WHERE id='".$this->details[1][id]."' LIMIT 1"));
$this->details[6] = mysql_fetch_assoc(mysql_query("SELECT * FROM user_i WHERE id='".$this->details[1][id]."' LIMIT 1"));
}
function returnValue() {
if($this->error) foreach($this->error as $e) echo "$e<br />";
if(!$this->justcheck && !$this->error) die("<a href=\"#main\">Du er nå innlogget som $username<br />Klikk her hvis du ikke viderekobles til hovedkvarteret.</a><meta http-equiv=\"Refresh\" content=\"0; url=#main\">");
}
}
и этот файл является файлом POST.php:
<?php
require_once("path/hidden/db.php");
switch(key($_GET)) {
default:
echo "Nothing to do here";
break;
case "login":
$required = TRUE;
require_once("path/hidden/login.c.php");
session_start();
$l = new login();
$l->onPost($_POST["username"], $_POST["password"]);
if($l->checkDetails()) {
$l->getEverything();
session_start();
$_SESSION = $l->details;
}
$_SESSION[RandomVar] = "RandomVal";
//$l->returnValue();
print_r($_SESSION);
print_r($l->details);
//echo session_id();
break;
}