Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Просто встретил реализацию на куки ht-p://www.nevius.ru/text.php?link=5
ДАК как насчет примера на файлах?
<?php
// Пример на PHP 5
class session implements Iterator
{
private static $_instance = null;
private static $_session_id = null;
private static $_folder = '/sessions/';
private static $_session_name = 'SESSIONID';
private $_SESSION = array();
private $_init = false;
public static function &getInstance()
{
if (null === self::$_instance) {
self::$_instance = new self();
}
return self::$_instance;
}
function __construct()
{
$this->_init = true;
$this->_SESSION = $this->read(self::start());
}
protected function read($id)
{
$file = dirname(__FILE__) . self::$_folder . $id;
if (is_file($file)) {
return unserialize(file_get_contents($file));
}
return array();
}
protected function write($id)
{
file_put_contents(dirname(__FILE__) . self::$_folder . $id, serialize($this->_SESSION));
}
function __destruct() {
if ($this->_init) $this->write(self::start());
$this->_init = false;
}
public static function start()
{
if (empty($_COOKIE[self::$_session_name])) {
self::$_session_id = $_REQUEST[self::$_session_name] = $_COOKIE[self::$_session_name] = md5(time() . rand(0, 100000));
setcookie(self::$_session_name, self::$_session_id, null, '/');
} else {
self::$_session_id = $_COOKIE[self::$_session_name];
}
return self::$_session_id;
}
/**
* Set param
*
* @param string $name
* @param mixed $value
*/
public function __set ($name, $value)
{
$this->_SESSION[$name] = $value;
}
/**
* Static set param
*
* @param string $name
* @param mixed $value
*/
public static function set($name, $value)
{
$_this = self::getInstance();
$_this->$name = $value;
}
/**
* Get param
*
* @param string $name
* @return mixed
*/
public function __get($name)
{
if (!isset($this->$name)) return null;
return $this->_SESSION[$name];
}
/**
* Static get param
*
* @param string $name
* @return mixed
*/
public static function get($name = null)
{
$_this = self::getInstance();
if (empty($name)) {
return $_this->_SESSION;
}
return $_this->$name;
}
public function __isset($name)
{
return isset($this->_SESSION[$name]);
}
public function __unset($name = null)
{
unset($this->_SESSION[$name]);
}
public static function destroy()
{
self::$_instance->__destruct();
self::$_instance = null;
}
public function rewind() {
reset($this->_SESSION);
}
public function current() {
return current($this->_SESSION);
}
public function key() {
return key($this->_SESSION);
}
public function next() {
return next($this->_SESSION);
}
public function valid() {
return $this->current() !== false;
}
}
session::start(); // Где то до вывода контента имитируемым старт СЕССИИ
session::set('val3', 'val3');
session::set('val2', 1);
//ИЛИ
$session = session::getInstance();
$session->val21 = 'val21';
$session->val22 = 2;
session::destroy();
$session = session::getInstance();
foreach ($session as $key => $val) {
echo "{$key} => {$val}<br />";
}
if ($_POST['keystring']) { session_id('f'); session_start(); }
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring'])
Небходимо начать сессию извне, до начала функции.Столкнулся с такой проблемкой делаю капчу с CMS за основу была взята капча captcha.ru всё вроде сделал вывод но вот сталкнулся с такой проблемкой это проверка кода.
Код вывода и проверки находится в основном файле функции портала function.php и выглядит так
Функция вывода и stopspam_check и функция проверкиКод:function stopspam() { global $mkportals, $DB, $std, $print, $mklib, $Skin, $mklib_board; session_start(); $stopspam ="1"; if ($stopspam==1) { $content ="<p><img src=\"{$MK_PATH}mkportal/antispam/kcaptcha.php\"></p> <p><input type=\"text\" name=\"keystring\"></p>"; } else { $content = "<input type=\"hidden\" name=\"keystring\" value=\"0\">"; } return $content; } function stopspam_check() { global $mkportals, $DB, $std, $print, $mklib, $Skin, $mklib_board; session_start(); $code = $_POST['keystring']; if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $code){ echo "Correct"; }else{ echo "Wrong $code"; } unset($_SESSION['captcha_keystring']); }
Нопроблема в том что session_start(); не работает в этом файле функций не ошибок не чего нет.
Если просто создать php файл с содержанием
то сессия создается, а если вызвать на страницу сайта это же из файла фукции то сессия не создается в чем может быть причина?Код:<?php session_start(); ?>