Gå til innhold

Header location bare går og går


Anbefalte innlegg

Hei,

 

Jeg har denne rare koden som et eksempel:

 

<?php 

ob_start(); 

class testClass { 
 function classFunction() { 
   global $test; 
   return $test; 
 } 
} 

$class_testClass = new testClass; 

function dust($str) { 
 global $class_testClass, $test; 
    
 header ('Location: tester.php?file=dss'); 
  
 $test = $str; 
 echo $class_testClass->classFunction(); 
} 

dust('vær så snill, kom til meg!'); 

?>

 

Hele koden min er større en som så, men dette er en slags... mindre versjon av hvordan det hele er bygd, kanskje dumt men sånn er det nå. Det som skjer, er at headeren bare går og går. Jeg blir aldri kastet til den adressen jeg vil... kan man ikke kjøre header(); location inni en funksjon, eller?

 

Takker for svar.

Lenke til kommentar
Videoannonse
Annonse

Hehe, ja, du har rett.

Men... ok... fra selve koden ikke illustrasjonskoden:

 

if ($error && !findInString('#commentError', $_SERVER['REQUEST_URI'])) {
 ob_start();
 header('Location: ' . $_SERVER['REQUEST_URI'] . '#commentError');
}
elseif ($finished && !findInString('#commentAdded', $_SERVER['REQUEST_URI'])) {
 ob_start(); 
 header('Location: ' . $_SERVER['REQUEST_URI'] . '#commentAdded');
}

 

findInString bruker strpos så dere er klar over det.

Den skal jo bare ikke kjøre om igjen nå da... den skal jo ikke gå når den kjører dit. findInString funker, det er jeg HUNDRE prosent sikker på.

Endret av Beethoven
Lenke til kommentar
Jeg blir aldri kastet til den adressen jeg vil... kan man ikke kjøre header(); location inni en funksjon, eller?

 

Dette er fult mulig jo, men problemet her er at når du bruker ob_start() så samler den opp alt som blir sendt til browseren.

 

Får å sende det som blir skrevet må du bruke ob_end_flush() eller en annen lignene funksjon. Normal så skal den bli sendt utansett om ob_start() blir brukt, men har vært borti at den ikke blir det, kanskje en innstiling i php.ini ?

 

 

EDIT: koden i post 1 virker fint hos meg

Endret av trondes
Lenke til kommentar

Hei,

 

Jeg er svært takknemmelig for hjelp nå :). Men, jeg har funnet løsningen på problemet mitt, men trenger svar på noe annet. Se på den andre koden jeg postet til dere, jeg leter etter en sånn #commentError i adresselinja. Det ser ut til at $_SERVER['REQUEST_URI'] ikke tar med seg sånn. Er det da noen som vet om hvordan jeg får hentet ut slik: klasse greier i headeren, altså: #commentError f. eks?

 

Så det hele har gått i ond sirkel for å si det slik, dere hadde rett :).

 

Takk for hjelp.

Lenke til kommentar

Den funksjonen du er ute etter er:

parse_url.

 

Du vil da få de forskjellige delene av urlen tilbake som et array. "Anchor Name" vil da ha "nøkkelen" fragment

 

Eks:

$url = "http://www.domene.com/index.php#read";
$parsed = parse_url($url);
echo "<pre>";
print_r($parsed);
echo "</pre>";

Vil gi deg noe ala dette:

Array
(
   [scheme] => http
   [host] => www.domene.com
   [path] => /index.php
   [fragment] => read
)

Endret av kakkle
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å
×
×
  • Opprett ny...