Gå til innhold

Forvirrende problem med ob_get_contents


Anbefalte innlegg

Ok, det som skjer er følgende

jeg har en session variabel (array) som jeg legger til info med setError('nummer','feilmelding')

Dette fungerer kjekt. setError() legger også denne informasjonen til en mysql database.

 

funksjonen readError() viser alle feilmeldingene, så bruker jeg unset for å fjerne alle meldinger, slik at de ikke vises dobbelt.. Dette fungerer også bra..

 

Problemet er, at når jeg inkluderer en side med buffer, slik som dette

 

i template classen

function fetch($fil) {
	ob_start();
	include_once $fil;
	$inc = ob_get_contents();
	ob_end_clean();

	return $inc;
}

 

I index

setError('123','Test feil');
$template->add_var('content', $template->fetch('enfil.php'));

 

Så vises feilmeldinge en gang (slik den skal), men den blir lagt til i mysql databasen to ganger, akkurat som at

setError() blir kjørt to ganger, eller at siden laster to ganger.. Dersom jeg erstatter den ene linjen slik

setError('123','Test feil');
$template->add_var('content', 'hei');

 

fungerer alt, bortsett fra at jeg ikke får inkludert noe innhold da :)

 

http://pastebin.no/3287 (Skrevet på engelsk, prøvde å få svar på #php)

Endret av Stian Jacobsen
Lenke til kommentar
Videoannonse
Annonse

function quoteSmart( $msg, $quote = '\'', $dbLink = NULL  )
{
 if ( !is_numeric( $msg ) )
 {
if ( get_magic_quotes_gpq() ) $msg = stripslashes( $msg );
if ( $dbLink ) $msg = $quote . mysql_real_escape_string( $msg, $dbLink ) . $quote;
else $msg = $quote . mysql_real_escape_string( $msg ) . $quote;
 }
 return $msg;
}

 

$message = quoteSmart($message);

Lenke til kommentar
function quoteSmart( $msg, $quote = '\'', $dbLink = NULL  )
{
 if ( !is_numeric( $msg ) )
 {
if ( get_magic_quotes_gpq() ) $msg = stripslashes( $msg );
if ( $dbLink ) $msg = $quote . mysql_real_escape_string( $msg, $dbLink ) . $quote;
else $msg = $quote . mysql_real_escape_string( $msg ) . $quote;
 }
 return $msg;
}

 

$message = quoteSmart($message);

Hva har det med denne saken å gjøre?

 

Vel, du kaller tross alt setError() to ganger, så hva forventer du?

045 		   $errors = setError();
046 		   if($errors = setError())

Har fjernet det forlengs, men ikke oppdatert pastebin..

Men det funket ikke det heller..

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...