mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-01-31 09:06:17 +00:00
Merging:
Revision: [1729] Fixed loading - added model, cakesession, security. Now loads properly. Revision: [1728] Fixing problems found in the way Cake handles sessions. These updates seem to work properly now. Added gethost() to basics.php to replace using gethostbyaddr which can be very slow. Added session_write_close(); in Controller::redirect(); Revision: [1719] Fix scaffold show.thtml undefined index error git-svn-id: https://svn.cakephp.org/repo/trunk/cake@1730 3807eeeb-6ff5-0310-8944-8be069107fe0
This commit is contained in:
parent
1867e6503a
commit
28cb84e549
5 changed files with 99 additions and 93 deletions
|
@ -482,4 +482,19 @@ function setUri()
|
|||
}
|
||||
return $uri;
|
||||
}
|
||||
|
||||
function gethost ($ip)
|
||||
{
|
||||
if (stristr(getenv('OS'), 'windows'))
|
||||
{
|
||||
$host = split('Name:',`nslookup $ip`);
|
||||
return ( trim (isset($host[1]) ? str_replace ("\n".'Address: '.$ip, '', $host[1]) : $ip));
|
||||
}
|
||||
else
|
||||
{
|
||||
$host = `host $ip`;
|
||||
return (($host ? end ( explode (' ', $host)) : $ip));
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
|
@ -299,6 +299,10 @@ class Controller extends Object
|
|||
{
|
||||
$url = '/'.$url;
|
||||
}
|
||||
if (function_exists('session_write_close'))
|
||||
{
|
||||
session_write_close();
|
||||
}
|
||||
header ('Location: '.$this->base.$url);
|
||||
}
|
||||
|
||||
|
|
|
@ -81,7 +81,6 @@ class CakeSession extends Object
|
|||
* @var unknown_type
|
||||
*/
|
||||
var $sessionId = null;
|
||||
|
||||
/**
|
||||
* Enter description here...
|
||||
*
|
||||
|
@ -93,47 +92,46 @@ class CakeSession extends Object
|
|||
*
|
||||
* @return unknown
|
||||
*/
|
||||
|
||||
function __construct($base = null)
|
||||
{
|
||||
$this->host = $_SERVER['HTTP_HOST'];
|
||||
$this->host = $_SERVER['HTTP_HOST'];
|
||||
|
||||
if (empty($base))
|
||||
{
|
||||
$this->path = '/';
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->path = $base;
|
||||
}
|
||||
if (empty($base))
|
||||
{
|
||||
$this->path = '/';
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->path = $base;
|
||||
}
|
||||
|
||||
if (strpos($this->host, ':') !== false)
|
||||
{
|
||||
$this->host = substr($this->host,0, strpos($this->host, ':'));
|
||||
}
|
||||
if (strpos($this->host, ':') !== false)
|
||||
{
|
||||
$this->host = substr($this->host,0, strpos($this->host, ':'));
|
||||
}
|
||||
|
||||
if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
|
||||
{
|
||||
$this->ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->ip = $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
|
||||
{
|
||||
$this->ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->ip = $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
|
||||
if(!empty($_SERVER['HTTP_USER_AGENT']))
|
||||
{
|
||||
$this->userAgent = md5($_SERVER['HTTP_USER_AGENT']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->userAgent = "";
|
||||
}
|
||||
if(!empty($_SERVER['HTTP_USER_AGENT']))
|
||||
{
|
||||
$this->userAgent = md5($_SERVER['HTTP_USER_AGENT']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->userAgent = "";
|
||||
}
|
||||
|
||||
$this->security = CAKE_SECURITY;
|
||||
$this->_initSession();
|
||||
$this->_begin();
|
||||
parent::__construct();
|
||||
$this->security = CAKE_SECURITY;
|
||||
$this->_initSession();
|
||||
$this->_begin();
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -191,7 +189,6 @@ class CakeSession extends Object
|
|||
*/
|
||||
function getLastError()
|
||||
{
|
||||
|
||||
if($this->lastError)
|
||||
{
|
||||
return $this->getError($this->lastError);
|
||||
|
@ -209,7 +206,6 @@ class CakeSession extends Object
|
|||
*/
|
||||
function isValid()
|
||||
{
|
||||
|
||||
return $this->valid;
|
||||
}
|
||||
|
||||
|
@ -243,7 +239,6 @@ class CakeSession extends Object
|
|||
*/
|
||||
function returnSessionVars()
|
||||
{
|
||||
|
||||
if(!empty($_SESSION))
|
||||
{
|
||||
$result = eval("return ".$_SESSION.";");
|
||||
|
@ -261,7 +256,6 @@ class CakeSession extends Object
|
|||
*/
|
||||
function writeSessionVar($name, $value)
|
||||
{
|
||||
|
||||
$expression = $this->_sessionVarNames($name);
|
||||
$expression .= " = \$value;";
|
||||
eval($expression);
|
||||
|
@ -274,12 +268,6 @@ class CakeSession extends Object
|
|||
*/
|
||||
function _begin()
|
||||
{
|
||||
|
||||
if (function_exists('session_write_close'))
|
||||
{
|
||||
session_write_close();
|
||||
}
|
||||
|
||||
session_cache_limiter("must-revalidate");
|
||||
session_start();
|
||||
$this->_new();
|
||||
|
@ -331,6 +319,10 @@ class CakeSession extends Object
|
|||
*/
|
||||
function _initSession()
|
||||
{
|
||||
if (function_exists('session_write_close'))
|
||||
{
|
||||
session_write_close();
|
||||
}
|
||||
|
||||
switch ($this->security)
|
||||
{
|
||||
|
@ -404,7 +396,6 @@ class CakeSession extends Object
|
|||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -415,8 +406,7 @@ class CakeSession extends Object
|
|||
*/
|
||||
function _new()
|
||||
{
|
||||
|
||||
if(!ereg("proxy\.aol\.com$", @gethostbyaddr($this->ip)))
|
||||
if(!ereg("\.aol\.com$", gethost($this->ip)))
|
||||
{
|
||||
if($this->readSessionVar("Config"))
|
||||
{
|
||||
|
@ -430,26 +420,26 @@ class CakeSession extends Object
|
|||
$this->_setError(1, "Session Highjacking Attempted !!!");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
srand((double)microtime() * 1000000);
|
||||
$this->writeSessionVar('Config.rand', rand());
|
||||
$this->writeSessionVar("Config.ip", $this->ip);
|
||||
$this->writeSessionVar("Config.userAgent", $this->userAgent);
|
||||
$this->valid = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!$this->readSessionVar("Config"))
|
||||
{
|
||||
srand((double)microtime() * 1000000);
|
||||
$this->writeSessionVar('Config.rand', rand());
|
||||
$this->writeSessionVar("Config.ip", $this->ip);
|
||||
$this->writeSessionVar("Config.userAgent", $this->userAgent);
|
||||
}
|
||||
$this->valid = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
srand((double)microtime() * 1000000);
|
||||
$this->writeSessionVar('Config.rand', rand());
|
||||
$this->writeSessionVar("Config.ip", $this->ip);
|
||||
$this->writeSessionVar("Config.userAgent", $this->userAgent);
|
||||
$this->valid = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!$this->readSessionVar("Config"))
|
||||
{
|
||||
srand((double)microtime() * 1000000);
|
||||
$this->writeSessionVar('Config.rand', rand());
|
||||
$this->writeSessionVar("Config.ip", $this->ip);
|
||||
$this->writeSessionVar("Config.userAgent", $this->userAgent);
|
||||
}
|
||||
$this->valid = true;
|
||||
}
|
||||
|
||||
if($this->security == 'high')
|
||||
{
|
||||
|
@ -486,7 +476,6 @@ class CakeSession extends Object
|
|||
die();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Enter description here...
|
||||
*
|
||||
|
@ -496,27 +485,23 @@ class CakeSession extends Object
|
|||
*/
|
||||
function _regenerateId()
|
||||
{
|
||||
|
||||
$oldSessionId = session_id();
|
||||
$sessionpath = session_save_path();
|
||||
if (empty($sessionpath))
|
||||
{
|
||||
$sessionpath = "/tmp";
|
||||
}
|
||||
if (isset($_COOKIE[session_name()]))
|
||||
{
|
||||
setcookie(CAKE_SESSION_COOKIE, '', time()-42000, $this->path);
|
||||
}
|
||||
session_regenerate_id();
|
||||
$newSessid = session_id();
|
||||
if (function_exists('session_write_close'))
|
||||
{
|
||||
if($this->security == 'high')
|
||||
{
|
||||
if (isset($_COOKIE[session_name()]))
|
||||
{
|
||||
setcookie(CAKE_SESSION_COOKIE, '', time()-42000, $this->path);
|
||||
}
|
||||
$sessionpath = session_save_path();
|
||||
$file = $sessionpath."/sess_$oldSessionId";
|
||||
@unlink($file);
|
||||
}
|
||||
session_write_close();
|
||||
$this->_initSession();
|
||||
session_id($newSessid);
|
||||
session_start();
|
||||
}
|
||||
$file = $sessionpath.DS."sess_$oldSessionId";
|
||||
@unlink($file);
|
||||
$this->_initSession();
|
||||
session_id($newSessid);
|
||||
session_start();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -539,7 +524,6 @@ class CakeSession extends Object
|
|||
*/
|
||||
function _sessionVarNames($name)
|
||||
{
|
||||
|
||||
if(is_string($name))
|
||||
{
|
||||
if(strpos($name, "."))
|
||||
|
@ -571,7 +555,6 @@ class CakeSession extends Object
|
|||
*/
|
||||
function _setError($errorNumber, $errorMessage)
|
||||
{
|
||||
|
||||
if($this->error === false)
|
||||
{
|
||||
$this->error = array();
|
||||
|
|
|
@ -7,10 +7,10 @@
|
|||
* PHP versions 4 and 5
|
||||
*
|
||||
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
||||
* Copyright (c) 2005, Cake Software Foundation, Inc.
|
||||
* Copyright (c) 2005, Cake Software Foundation, Inc.
|
||||
* 1785 E. Sahara Avenue, Suite 490-204
|
||||
* Las Vegas, Nevada 89104
|
||||
*
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
|
@ -93,7 +93,7 @@
|
|||
foreach ($objModel->_oneToOne as $relation)
|
||||
{
|
||||
list($association, $model, $value) = $relation;
|
||||
$otherModelName = $objModel->tableToModel[$model];
|
||||
$otherModelName = $objModel->tableToModel[$objModel->{$model}->table];
|
||||
$controller = Inflector::pluralize($model);
|
||||
|
||||
echo "<div class='related'><H2>Related ".Inflector::humanize($association)."</H2>";
|
||||
|
@ -113,7 +113,7 @@
|
|||
|
||||
}
|
||||
echo "</dl>";
|
||||
echo "<ul class='actions'><li>".$html->linkTo('Edit '.Inflector::humanize($association),"/".Inflector::underscore($controller)."/edit/{$data[$association][$otherModelObject->primaryKey]}")."</li></ul></div>";
|
||||
echo "<ul class='actions'><li>".$html->linkTo('Edit '.Inflector::humanize($association),"/".Inflector::underscore($controller)."/edit/{$data[$association][$objModel->{$model}->primaryKey]}")."</li></ul></div>";
|
||||
}
|
||||
?>
|
||||
|
||||
|
|
|
@ -58,6 +58,10 @@ require_once (CONFIGS.'core.php');
|
|||
require_once (CONFIGS.'database.php');
|
||||
|
||||
uses ('neat_array');
|
||||
uses ('object');
|
||||
uses ('session');
|
||||
uses ('security');
|
||||
uses ('model'.DS.'model');
|
||||
uses ('model'.DS.'dbo'.DS.'dbo_factory');
|
||||
uses ('controller'.DS.'controller');
|
||||
uses ('controller'.DS.'components'.DS.'acl');
|
||||
|
|
Loading…
Add table
Reference in a new issue