Вы не зашли.
Чет я не понял что да как там.
Только как задания прописывать понял:
Допустим можно узнать папку с PHP:
Код:
span style="color: #0000BB"><?phpecho $_ENV['PHPRC']; |
Можно узнать путь к файлу исполнения:
Код:
span style="color: #0000BB"><?phpecho __FILE__; |
А куда пихать созданный файл cgi непонятно.
Еще думал насчет другого варианта:
Код:
span style="color: #0000BB"><?php//Набросокrequire_once 'cfg.php'; //Есть массив $cfg с настройками, котрые могут быть замещены настройками с базы.//$db = DB::singleton();//Add settings////$cfg += $db->query('SELECT * FROM `cfg`;')->fetchAll(); //+ SESSION////! KEY `session_id`if (@$_COOKIE[$cfg['cookie_name']]) { $qt = 'SELECT * ' . 'FROM `users` ' . 'WHERE `users`.`cookie_id` = ? ' . 'LIMIT 1;'; $q = $db->prepare($qt); $q->execute(array($_COOKIE[$cfg['cookie_name']])); if ($q->rowCount()) { $user += $q->fetch(); //Regenerate//..............//TIMESTAMP (Не люблю UNIX_TIMESTAMP, хотя было бы куда проще)// if (date_format(date_create($user['cookie_regenerate_interval']), 'Ymd') < date('Ymd')) { $hash = md5(microtime()); $db->query('UPDATE `users` ' . "SET `cookie_regenerate_interval` = NOW() + INTERVAL '" . ((int) $cfg['cookie_regenerate_interval']['value']) . "' " . ((int) $cfg['cookie_regenerate_interval']['format']) // sec.||min.||etc. . ", `users`.`cookie_id` = '" . $hash . "' " . "WHERE `users`.`user_id` = '" . $user['user_id'] . "' " . 'LIMIT 1;'); setcookie($cfg['cookie_name'], $_COOKIE[$cfg['cookie_name']] = $hash, $cfg['cookie_expire'], $cfg['cookie_path'], $cfg['cookie_domain'], $cfg['cookie_secure'], $cfg['cookie_httpOnly']); } } else { setcookie($cfg['cookie_name'], null, 0, $cfg['cookie_path'], $cfg['cookie_domain'], $cfg['cookie_secure'], $cfg['cookie_httpOnly']); unset($_COOKIE[$cfg['cookie_name']], $user); }}//- SESSION// |
И думал может нафиг это все,
использовать стандартный путь.
$hash = md5(microtime()); // тут microtime массив вернет. а md5 просит строку
лучше замени все это на uniqid() например
ну и так, напомню такой термин -
KISS
Gemorroj написал:
$hash = md5(microtime()); // тут microtime массив вернет. а md5 просит строку
Код:
span style="color: #0000BB"><?php // v5.2.12var_dump(micro_time());//string(21) "0.11501000 1342787062" |
tipsunда, запамятовал уже( чаще пользуются microtime(true)
Gemorroj написал:
ну и так, напомню такой термин - KISS
Это к алгоритму или ко времени относится в данном случае?
Надо будет срок_актуальности_печеньки хранить в UNIX_TIMESTAMP.
Отредактировано tipsun (2012.07.21 01:01)
Лучше?
Код:
span style="color: #0000BB"><?php//+ SESSION////! KEY `session_id`if (@$_COOKIE[$cfg['cookie_name']]) { $qt = 'SELECT * ' . 'FROM `users` ' . 'WHERE `users`.`cookie_id` = ? ' . 'LIMIT 1;'; $q = $db->prepare($qt); $q->execute(array($_COOKIE[$cfg['cookie_name']])); if ($q->rowCount()) { $user += $q->fetch(); if ($user['cookie_timestamp'] < $_SERVER['REQUEST_TIME']) { $_COOKIE[$cfg['cookie_name']] = md5(uniqid()); $db->query('UPDATE `users` ' . "SET `users`.`cookie_timestamp` = '" . ($_SERVER['REQUEST_TIME'] + (int) $cfg['cookie_lifeTime']) . "', " . "`users`.`cookie_id` = '" . $_COOKIE[$cfg['cookie_name']] . "' " . "WHERE `users`.`user_id` = '" . $user['user_id'] . "' " . 'LIMIT 1;'); setcookie($cfg['cookie_name'], $_COOKIE[$cfg['cookie_name']], $cfg['cookie_expire'], $cfg['cookie_path'], $cfg['cookie_domain'], $cfg['cookie_secure'], $cfg['cookie_httpOnly']); } } else { setcookie($cfg['cookie_name'], null, 0, $cfg['cookie_path'], $cfg['cookie_domain'], $cfg['cookie_secure'], $cfg['cookie_httpOnly']); unset($_COOKIE[$cfg['cookie_name']], $user); }}//- SESSION// |
лучше. но UPDATE тоже переделай на параметризованный запрос. так же проверяй не только $q->rowCount() но и чтобы execute возвратил true