note 53809 added to ref.session

From: Date: Tue, 14 Jun 2005 02:44:27 +0000
Subject: note 53809 added to ref.session
Groups: php.notes 
Request: Send a blank email to php-notes+get-90388@lists.php.net to get a copy of this message
Having to use transparent on a system where trans_sid was not compiled, I came up with the folowing ob_start handler: <?php function ob_sid_rewrite($buffer){ $replacements = array( '/<\s*(a|link|script)\s[^>]*(href|src)\s*=\s*"([^"]*)"/', '/<\s*(a|link|script)\s[^>]*(href|src)\s*=\s*\'([^\'<>]*)\'/', ); $buffer = preg_replace_callback($replacements, "pa_sid_rewriter", $buffer); $buffer = preg_replace('/<form\s[^>]*>/', '\0<input type="hidden" name="' . session_name() . '" value="' . session_id() . '"/>', $buffer); return $buffer; } function pa_sid_rewriter($matches){ $buf = $matches[0]; $url = $matches[3]; $url_orig=$url; if ($url[0]=='/' || $url[0]=='#' || preg_match('/^[A-Za-z0-9]*:/', $url)) return $buf; $ses_name = session_name(); if (strstr($url, "$session_name=")) return $buf; $p = strpos($url, "#"); $ref = false; if($p){ $ref = substr($url, $p); $url = substr($url, 0, $p); } if (strlen($url)==0) return $buf; if (!strstr($url, "?")) $url.="?"; else $url.="&amp;"; $url.=session_name() ."=".session_id(); if($ref) $url.=$ret; return str_replace($url_orig, $url, $buf); } ?> It adds a field to urls and a fake form entry. You can start the rewrite by doing the folowing at the start of the script: <?php function pa_set_trans_sid(){ if ( defined('SID') ){ // use trans sid as its available ini_set("session.use_cookies", "0"); ini_set("session.use_trans_sid", "true"); ini_set("url_rewriter.tags", "a=href,area=href,script=src,link=href," . "frame=src,input=src,form=fakeentry"); }else{ ob_start('ob_sid_rewrite'); } } ?> ---- Manual Page -- http://www.php.net/manual/en/ref.session.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+53809 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+53809&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+53809&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+53809&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+53809&report=yes&reason=useless Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+53809&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+53809&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#90388) next »