header("Location: url.php") prob

Alles, was PHP betrifft, kann hier besprochen werden.

header("Location: url.php") prob

Postby Kev » 12. February 2005 17:12

Also, wie die überschrift schon sagt hab ich ein kleines prob, ich hab mir eine header funktion gemacht leider, funktioniert sie leider nicht so wie sie sollte, ich habe 2 funktion...

function redirect($loc){
header("Location: $loc");
exit();
}


und
function redirect($loc){
header("Location: $loc");
}


Nya leider funktioniert keine von beiden vergeblich, weiterleitung dauert zulange deshalb wollt ich mit header machen...
kann mir jemand helfen wo evtl. das prob liegt
User avatar
Kev
 
Posts: 269
Joined: 09. October 2004 13:25
Location: NRW/Hamm

Postby Wiedmann » 12. February 2005 17:30

Nya leider funktioniert keine von beiden

Wegen?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Kev » 12. February 2005 17:34

Hm, er reagiert nicht drauf allgemein auf beide funktion...
Das ist das prob...
User avatar
Kev
 
Posts: 269
Joined: 09. October 2004 13:25
Location: NRW/Hamm

Postby Wiedmann » 12. February 2005 18:53

a) dein Brauser macht was, nur icht das was du willst (dann sollte aber irgend eine Anzeige kommen)

b) PHP zeigt dir keine Fehlermeldung an, weil du die dir nciht anzeigen lässt.

c) die Funktion von dir wird nicht aufgerufen.

d) die Funktion von dir wird aufgerufen, aber mit einem falschen Parameter.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Kev » 12. February 2005 20:11

a) doch er macht alles was ich will

b) php zeigt fehler an nur es kommt keiner

c) doch die funktion wird aufgerufen

d) redirect("link.php");

Es geht nur eben in der index sprich nur in den seiten wo keine sessions verwendet werden aber sobald ich welche verwend geht nix mehr
User avatar
Kev
 
Posts: 269
Joined: 09. October 2004 13:25
Location: NRW/Hamm

Postby Wiedmann » 12. February 2005 20:21

b) php zeigt fehler an nur es kommt keiner

Auf welchem Wert steht denn dein "error_reporting"?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby jakimo72 » 12. February 2005 22:17

versuchs mal mit
Code: Select all
define('PFAD','/'); //bitte anpassen
function redirect($string)
{
header("Location: http://".$_SERVER['HTTP_HOST']
                         .PFAD
                         .$string);
}


Mit anderen Worten Du benötigst immer eine voll qualifizierte URL.
Außerdem darf zuvor in deinem Script keine Ausgabe
erfolgt sein, auch keine Leerzeile
(Unter Win mag's noch gehen, aber Linux reagiert darauf ungehalten).

Achte darauf, dass vor "<?php" in dem Script auch nicht eine einzelnes
Zeichen steht.
User avatar
jakimo72
 
Posts: 151
Joined: 07. February 2005 13:25
Location: Hamburg-Barmbek

Postby Benzman » 13. February 2005 14:40

Also wenn ich das richtig sehe, hast du zwischen Location: und $loc ein Leerzeichen. Ich weiß nicht ob das von Belang ist, aber bei meinen Scripts sind da keine Leerzeichen dazwischen und sie funktionieren alle.

Also einfach mal header("Location:$loc"); oder wenn das auch nicht geht, header("Location:".$loc); versuchen.
User avatar
Benzman
 
Posts: 132
Joined: 27. July 2003 18:46
Location: Bayern

Postby Kev » 13. February 2005 14:58

hm komisch, also hats auch vorher gefunzt wenn ich es in irgendwelchen scripten reingetan habe..egal wo, das wundert mich das es jetzt net mehr geht...
User avatar
Kev
 
Posts: 269
Joined: 09. October 2004 13:25
Location: NRW/Hamm

Postby Kev » 13. February 2005 15:21

kann man net mit ob_start(); oder so den cache zurück halten hab da irgendwie sowas gelesen
User avatar
Kev
 
Posts: 269
Joined: 09. October 2004 13:25
Location: NRW/Hamm

Postby Kev » 16. February 2005 18:26

Also,
Code: Select all
function redirect($loc){
header("Location: $loc");
}


Es ist möglich mit dieser Funktion, habs grad hinbekommen, endlich!
*gg*, es lag dran wo man die funktion Inlcudet bzw ob man es überhaupt includet, wenn man includet muss es ganz oben stehn, da es ja beim header auch sein muss, nur es kommt auf die position an und welche reihenfolge eben...

Also nun geht es einwandfrei!

Die Bedingungen sind dafür, das der Header leer ist, also wenn du zb: blabla.php?op=bla machst führt er den befehl aus wie gewohnt wenn du darunter redirect("blabla.php"); machst geht es nicht!

1.Du hast dadurch den header gefüllt.
2.Wie man den link kurz danach leert und dann erst weiterführt weis ich selbst net wie man genau leert...hmpf...
3.Mach es mit JS..Zb:
echo "<script language='JavaScript'>
window.location.href = 'DEIN LINK';
</script>";



Kleiner hinweis noch, es geht nur solang bis hinter die veriable, nix weitere is wie zb:
blbl.php?op=blbl&id=218432895
So gehts net musst ich feststellen es ging bei mir bis so:
blbl.php?op=blbl
User avatar
Kev
 
Posts: 269
Joined: 09. October 2004 13:25
Location: NRW/Hamm

Postby Kev » 17. February 2005 20:01

Also es gibt doch eine lösung dafür:

1.
Ausgabe Buffern mit ob_start()
Man setzt einfach vor den Code die PHP-Funktion ob_start():
Code: Select all
<?php
ob_start();

// Dein restlicher PHP-Code
?>



2.
Einfach sauber programmieren
Das ist die bessere Möglichkeit. Man sollte einfach immer sauber programmieren: Erst kommt header() dann später kommt die Ausgabe wie echo.
User avatar
Kev
 
Posts: 269
Joined: 09. October 2004 13:25
Location: NRW/Hamm


Return to PHP

Who is online

Users browsing this forum: No registered users and 58 guests