webForumDet fria alternativet

Trubbel med cookies - kakan tycks inte sparas

PHP

0 svar · 239 visningar · startad av SimOnline

Medlem sedan juli 20031 132 inlägg
Frågan#1

Hejsan!

Jag håller på att försöka implementera UDASSS på en WordPress-baserad hemsida för att kunna byta CSS på ett enkelt vis. För att göra detta använder jag ett plugin till WordPress som bygger på just UDASSS.

När jag kör UDASSS på en enkel php-fil funkar det strålande, men med pluginet i WordPress så verkar inte kakan sparas, för så fort jag uppdaterar/byter sida återgår det till den urstprungliga css:en. Vad kan vara problemet?

Själva php-koden för att byta är mig veterligen precis densamma i originalscriptet som i pluginet. Den ser ut som nedan:

<?php
	// style-switcher.php
	class AlternateStyles {
		var $styleSheet = array();	// @Array: collection of All Style Sheets
		var $altStyles = array();	// @Array: collection of Alternate Style Sheets
		var $prefStyleSheet = '';	// @String: The name (title) of the Preferred Style Sheet
		var $styleSheets = '';		// @String: All the style sheets output in their respective html formats
		// @constructor
		function AlternateStyles() {
			$this->prefStyleSheet = $this->cleanTitle($_GET['css']);
			if ( isset($_GET['cssJaxy']) && $_GET['cssJaxy'] == true ) {
				$this->setStyleCookie($this->prefStyleSheet);
				die();
			}
		}
		// @public
		function add($path,$media='',$title='',$alternate=false) {
			// first grab all global styles
			if ( !$title ) {
				$mediaRef = ($media != '' ? 'media="'.$media.'" ' : '');
				$styleLink = '<link type="text/css" href="'.$path.'" rel="stylesheet" '.$mediaRef.' />';
				// add it to our style sheet array
				array_push($this->styleSheet,$styleLink);
			}
			// otherwise we're adding the 'preferred' & 'alternates'
			else {
				$this->determinePreferred($path,$title,$media,$alternate);
			}
			// now grab our preferred
			$this->getPreferredStyles();
		}
		// @private
		function getPreferredStyles() {
			$this->styleSheets = '';
			$totalStyleSheets = count($this->styleSheet);
			for ( $i = 0; $i < $totalStyleSheets;$i++ ) {
				$this->styleSheets .= $this->styleSheet[$i]."\n";
			}
		}
		// @private
		function determinePreferred($path,$title,$media='',$alternate=false) {
			// still need that media thing no matter what
			$mediaRef = ($media != '' ? 'media="'.$media.'" ' : '');
			// if $_GET['css'] was set
			if ( $this->prefStyleSheet ) {
				$this->setStylecookie($this->prefStyleSheet);
				if ( $this->prefStyleSheet == $title ) {
					$styleLink = '<link type="text/css" href="'.$path.'" rel="stylesheet" '.$mediaRef.' title="'.$title.'" />';
				}
				else {
					$styleLink = '<link type="text/css" href="'.$path.'" rel=" alternate stylesheet" '.$mediaRef.' title="'.$title.'" />';
				}
			}
			// or we could have set a style sheet from before
			elseif ( $_COOKIE['PrefStyles'] ) {
				// odd bug with prototype, php, and cookies....don't ask
				$cookieCheck = $this->fixOurCookie($_COOKIE['PrefStyles']);
				if ( $cookieCheck == $title ) {
					$styleLink = '<link type="text/css" href="'.$path.'" rel="stylesheet" '.$mediaRef.' title="'.$title.'" />';
				}
				else {
					$styleLink = '<link type="text/css" href="'.$path.'" rel=" alternate stylesheet" '.$mediaRef.' title="'.$title.'" />';
				}
			}
			// probably just our first time here
			else  {
				$styleLink = '<link type="text/css" href="'.$path.'" rel="'.($alternate ? 'alternate ' : '' ).'stylesheet" '.$mediaRef.' title="'.$title.'" />';
			}
			array_push($this->styleSheet,$styleLink);
		}
		// @private
		function setStyleCookie($value) {
			setcookie("PrefStyles", $value, time()+(3600*24*365));  /* expires in 1 year */
		}
		// @private
		function cleanTitle($str) {
			return str_replace('_',' ',$str);
		}
		// @private
		function fixOurCookie($str) {
			$c = explode('?',$str);
			return $c[0];
		}
		// @public
		function drop() {
			// watchout! magic may occur
			echo $this->styleSheets;
		}
	}
	?>

Någon som har några direkta idéer på vad som kan vara fel?

272 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
135 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)