Merge branch 'master' into myShaarli
This commit is contained in:
commit
588c4e4be4
1 changed files with 30 additions and 9 deletions
39
index.php
39
index.php
|
@ -44,7 +44,7 @@
|
|||
// Force cookie path (but do not change lifetime)
|
||||
$cookie=session_get_cookie_params();
|
||||
$cookiedir = ''; if(dirname($_SERVER['SCRIPT_NAME'])!='/') $cookiedir=dirname($_SERVER["SCRIPT_NAME"]).'/';
|
||||
session_set_cookie_params($cookie['lifetime'],$cookiedir,$_SERVER['SERVER_NAME']); // Set default cookie expiration and path.
|
||||
session_set_cookie_params($cookie['lifetime'],$cookiedir,$_SERVER['HTTP_HOST']); // Set default cookie expiration and path.
|
||||
|
||||
// Set session parameters on server side.
|
||||
define('INACTIVITY_TIMEOUT',3600); // (in seconds). If the user does not access any page within this time, his/her session is considered expired.
|
||||
|
@ -406,14 +406,14 @@ function ban_canLogin()
|
|||
$_SESSION['expires_on']=time()+$_SESSION['longlastingsession']; // Set session expiration on server-side.
|
||||
|
||||
$cookiedir = ''; if(dirname($_SERVER['SCRIPT_NAME'])!='/') $cookiedir=dirname($_SERVER["SCRIPT_NAME"]).'/';
|
||||
session_set_cookie_params($_SESSION['longlastingsession'],$cookiedir,$_SERVER['SERVER_NAME']); // Set session cookie expiration on client side
|
||||
session_set_cookie_params($_SESSION['longlastingsession'],$cookiedir,$_SERVER['HTTP_HOST']); // Set session cookie expiration on client side
|
||||
// Note: Never forget the trailing slash on the cookie path !
|
||||
session_regenerate_id(true); // Send cookie with new expiration date to browser.
|
||||
}
|
||||
else // Standard session expiration (=when browser closes)
|
||||
{
|
||||
$cookiedir = ''; if(dirname($_SERVER['SCRIPT_NAME'])!='/') $cookiedir=dirname($_SERVER["SCRIPT_NAME"]).'/';
|
||||
session_set_cookie_params(0,$cookiedir,$_SERVER['SERVER_NAME']); // 0 means "When browser closes"
|
||||
session_set_cookie_params(0,$cookiedir,$_SERVER['HTTP_HOST']); // 0 means "When browser closes"
|
||||
session_regenerate_id(true);
|
||||
}
|
||||
// Optional redirect after login:
|
||||
|
@ -451,7 +451,7 @@ function serverUrl()
|
|||
{
|
||||
$https = (!empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS'])=='on')) || $_SERVER["SERVER_PORT"]=='443'; // HTTPS detection.
|
||||
$serverport = ($_SERVER["SERVER_PORT"]=='80' || ($https && $_SERVER["SERVER_PORT"]=='443') ? '' : ':'.$_SERVER["SERVER_PORT"]);
|
||||
return 'http'.($https?'s':'').'://'.$_SERVER["SERVER_NAME"].$serverport;
|
||||
return 'http'.($https?'s':'').'://'.$_SERVER['HTTP_HOST'].$serverport;
|
||||
}
|
||||
|
||||
// Returns the absolute URL of current script, without the query.
|
||||
|
@ -1297,7 +1297,7 @@ function renderPage()
|
|||
if (is_numeric($_GET['linksperpage'])) { $_SESSION['LINKS_PER_PAGE']=abs(intval($_GET['linksperpage'])); }
|
||||
// Make sure the referer is from Shaarli itself.
|
||||
$referer = '?';
|
||||
if (!empty($_SERVER['HTTP_REFERER']) && strcmp(parse_url($_SERVER['HTTP_REFERER'],PHP_URL_HOST),$_SERVER['SERVER_NAME'])==0)
|
||||
if (!empty($_SERVER['HTTP_REFERER']) && strcmp(parse_url($_SERVER['HTTP_REFERER'],PHP_URL_HOST),$_SERVER['HTTP_HOST'])==0)
|
||||
$referer = $_SERVER['HTTP_REFERER'];
|
||||
header('Location: '.$referer);
|
||||
exit;
|
||||
|
@ -1316,7 +1316,7 @@ function renderPage()
|
|||
}
|
||||
// Make sure the referer is from Shaarli itself.
|
||||
$referer = '?';
|
||||
if (!empty($_SERVER['HTTP_REFERER']) && strcmp(parse_url($_SERVER['HTTP_REFERER'],PHP_URL_HOST),$_SERVER['SERVER_NAME'])==0)
|
||||
if (!empty($_SERVER['HTTP_REFERER']) && strcmp(parse_url($_SERVER['HTTP_REFERER'],PHP_URL_HOST),$_SERVER['HTTP_HOST'])==0)
|
||||
$referer = $_SERVER['HTTP_REFERER'];
|
||||
header('Location: '.$referer);
|
||||
exit;
|
||||
|
@ -1564,8 +1564,29 @@ function renderPage()
|
|||
{
|
||||
list($status,$headers,$data) = getHTTP($url,4); // Short timeout to keep the application responsive.
|
||||
// FIXME: Decode charset according to specified in either 1) HTTP response headers or 2) <head> in html
|
||||
if (strpos($status,'200 OK')!==false) $title=html_entity_decode(html_extract_title($data),ENT_QUOTES,'UTF-8');
|
||||
|
||||
if (strpos($status,'200 OK')!==false)
|
||||
{
|
||||
// Look for charset in html header.
|
||||
preg_match('#<meta .*charset=.*>#Usi', $data, $meta);
|
||||
|
||||
// If found, extract encoding.
|
||||
if (!empty($meta[0]))
|
||||
{
|
||||
// Get encoding specified in header.
|
||||
preg_match('#charset="?(.*)"#si', $meta[0], $enc);
|
||||
// If charset not found, use utf-8.
|
||||
$html_charset = (!empty($enc[1])) ? strtolower($enc[1]) : 'utf-8';
|
||||
}
|
||||
else { $html_charset = 'utf-8'; }
|
||||
|
||||
// Extract title
|
||||
$title = html_extract_title($data);
|
||||
if (!empty($title))
|
||||
{
|
||||
// Re-encode title in utf-8 if necessary.
|
||||
$title = ($html_charset == 'iso-8859-1') ? utf8_encode($title) : $title;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($url=='') $url='?'.smallHash($linkdate); // In case of empty URL, this is just a text (with a link that point to itself)
|
||||
$link = array('linkdate'=>$linkdate,'title'=>$title,'url'=>$url,'description'=>$description,'tags'=>$tags,'via' => $via,'private'=>0);
|
||||
|
@ -2038,7 +2059,7 @@ function lazyThumbnail($url,$href=false)
|
|||
function install()
|
||||
{
|
||||
// On free.fr host, make sure the /sessions directory exists, otherwise login will not work.
|
||||
if (endsWith($_SERVER['SERVER_NAME'],'.free.fr') && !is_dir($_SERVER['DOCUMENT_ROOT'].'/sessions')) mkdir($_SERVER['DOCUMENT_ROOT'].'/sessions',0705);
|
||||
if (endsWith($_SERVER['HTTP_HOST'],'.free.fr') && !is_dir($_SERVER['DOCUMENT_ROOT'].'/sessions')) mkdir($_SERVER['DOCUMENT_ROOT'].'/sessions',0705);
|
||||
|
||||
|
||||
// This part makes sure sessions works correctly.
|
||||
|
|
Loading…
Reference in a new issue