php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.06.2004, 17:53  
Erfahrener Benutzer
 
Registriert seit: 08.11.2003
Beiträge: 139
Calexico
Standard Header Probleme!

Hej!

Ich hab andauernd Probleme mit Header-Weiterleitungen. Das eine mal funktioniert ein MySQL-Query nur ohne anschließenden Header, die andere tausendmal funktioniert eine Weiterleitung nicht, die in einer if-schleife drin steht. Das Ganze sieht so aus und ist mir schon so oft passiert:
Code:
if(mysql_num_rows(mysql_query("SELECT * FROM forum_themen WHERE Thema='".$_POST["titel"]."'"))!=0){Header("Location: new_topic.php?error=2");}
Ich kann hier nirgends ein Fehler finden und wenn ich das ganze aus dem Script rausnehme und in eine neue Datei schreibe geht's, daher das script vorher.

Code:
session_start();
 include("../../sql.php");
 include("check.php"); 
 if(isset($_GET["sid"]) && isset($_GET["sname"])){
  $session="&sid=".$_GET["sid"]."&sname=".$_GET["sname"];
 }
 else{$session="";}
 if(isset($_GET["action"]) && $_GET["action"]=="save"){
  if($_POST["titel"]==""){Header("Location: new_topic.php?error=1".$session."");}
der Header hier geht im übrigen auch nicht, es werden aber auch keine fehler angezeigt, sondern das Script ganz normal ausgeführt, als ob es diesen Header gar nicht gäbe.

Wenn ich jetzt allerdings ein die() hinter die beiden Header setzte dann funktioniert's plötzlich! D.h. wenn ein die() da ist führt er die Header die min. 1 zeile zuvor ausgeführt hätten werden sollen, anstatt des die()'s aus.........!!??!?!?

Ich verstehe es echt nicht.

kann mir jmd. helfen?

DANKE!

Calexico
Calexico ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.06.2004, 23:30  
nilsfeld
Gast
 
Beiträge: n/a
Standard

Hi, bei header gibts immer son paar sachen zu beachten.

Du darfst vorm Header keine Ausgabe machen.

Bei dem Beispiel Hier wird er dir eine Fehlermeldung ausgeben.

Code:
Zeile 1: <?php
Zeile 2:
Zeile 3: echo "Dies wird nicht gehen";
Zeile 4: header(......);
Zeile 5:
Zeile 6: ?>
Bei dem folgendem Beispiel gibts keine Fehlermeldung.

Code:
Zeile 1: <?php
Zeile 2:
Zeile 3: header(......);
Zeile 4: echo "Dies wird gehen";
Zeile 5:
Zeile 6: ?>

Es gibt auch eine Fehlermeldung wenn du diese hier machst.
In diesem Fall gilt das html was über dem php script steht schon als Ausgabe und es gibt nen Fehler.

Code:
Zeile 1: <html>
Zeile 2: <?php
Zeile 3: header(......);
Zeile 4: echo "Dies wird nicht gehen";
Zeile 5:
Zeile 6: ?>
Auch der Folgende Text wird einen Fehler ausgeben.
In diesem Fall ist das Leerzeichen in der ersten zeile schon eine Ausgabe und php gibt wieder ne Fehlermeldung.

Code:
Zeile 1: 
Zeile 2: <?php
Zeile 3: header(......);
Zeile 4: echo "Dies wird nicht gehen";
Zeile 5:
Zeile 6: ?>

Eigenlich ist das ganz leicht wenn man sich an die Punkte Hält:

- keine html ausgabe vor dem Header
- keine leerzeichen ausgeben vor dem Header
- keine echo`s oder print`s vor dem Header

Natürlich dürfen in Datein die man mit include läd auch keine ausgaben stattfinden.

Schau mal deine Datein durch ich vermute das du irgenwo schon eine Ausgabe drin hast.

Schau dir auch diesen Befehl mal an

Code:
ob_start();
Der sollte irgenwo am anfang der Datei stehe wo auch die Session gestartet wird.


mfg


Nils F.
 
Alt 30.06.2004, 18:42  
Erfahrener Benutzer
 
Registriert seit: 08.11.2003
Beiträge: 139
Calexico
Standard

hmmmm.........das war mir eigentlich fast alles klar.

aber ich konnte keine ausgabe in diesem sinne finden

mein komplettes script bis zu den beiden headern sieht so aus:
Code:
<?php
 session_start();
 include("../../sql.php");
 include("check.php"); 
 if(isset($_GET["sid"]) && isset($_GET["sname"])){
  $session="&sid=".$_GET["sid"]."&sname=".$_GET["sname"];
 }
 else{$session="";}
 if(isset($_GET["action"]) && $_GET["action"]=="save"){
  if($_POST["titel"]==""){Header("Location: new_topic.php?error=1".$session."");}
  if(mysql_num_rows(mysql_query("SELECT * FROM forum_themen WHERE Thema='".$_POST["titel"]."'"))!=0){Header("Location: new_topic.php?error=2");}
sql.php:
Code:
<?php
$server="localhost"; // MySQL-Host angeben
$username="root"; // MySQL-User angeben
$password=""; // Passwort angeben
$database_name="minis"; // Gewuenschte Datenbank angeben

$connection=mysql_connect($server, $username, $password) or die("Verbindungsversuch fehlgeschlagen");

mysql_select_db($database_name, $connection) or die("Konnte die Datenbank nicht waehlen.");

?>
und check.php:
Code:
<?php
if(isset($_GET["sid"]) && isset($_GET["sname"])){
 $sqlxy="SELECT * FROM forum_session WHERE id = '".$_GET["sid"]."' AND name = '".$_GET["sname"]."'";
 $resultxy=mysql_query($sqlxy);
 if(mysql_num_rows($resultxy)==0){session_destroy(); $user="no";}
 while($row=mysql_fetch_array($resultxy)){
  if(time()<$row["next"]){
   $next=time() + 7200;
   $sqlxyz="UPDATE forum_session SET time = '".time()."' AND next = '".$next."' WHERE name = '".$_GET["sname"]."' AND ID = '".$_GET["sid"]."'";
   $resultxyz=mysql_query($sqlxyz);
   $user="yes";
  }
 }
 }
 else{$user="no";}
?>
ich finde hier keine ausgabe! oder zählt als ausgabe auch eine leerzeile zur besseren übersicht innerhalb des scripts??
Calexico ist offline  
Alt 30.06.2004, 19:07  
Gast
 
Beiträge: n/a
Standard Re: Header Probleme!

Zitat:
Zitat von Calexico
Code:
if (mysql_num_rows(mysql_query("SELECT * FROM forum_themen WHERE Thema='".$_POST["titel"]."'"))!=0)
{
  Header("Location: new_topic.php?error=2");
}
Ich kann hier nirgends ein Fehler finden
Ich schon. http://de.php.net/header

Zitat:
Wenn ich jetzt allerdings ein die() hinter die beiden Header setzte dann funktioniert's plötzlich!
Wenn Du den Client mit header('Location') wegschickst, mußt Du auch das Script mit exit beenden.

Sowas ist ganz schlecht:
Zitat:
Code:
 if(isset($_GET["sid"]) && isset($_GET["sname"])){ 
  $session="&sid=".$_GET["sid"]."&sname=".$_GET["sname"]; 
#...
if(isset($_GET["action"]) && $_GET["action"]=="save"){ 
  if($_POST["titel"]=="")
{
  Header("Location: new_topic.php?error=1".$session."");
}
Falscher Session_name
falscher URL
das Schreiben des Session File wird nicht forciert
fehlendes exit nach header('Location')
 
Alt 30.06.2004, 20:48  
Erfahrener Benutzer
 
Registriert seit: 08.11.2003
Beiträge: 139
Calexico
Standard

okay dann liegt's wohl am exit gleich ausprobieren!!

zu den sessions, die sind gar keine. ich benutze nur die sessionid, die mit dem in der db gespeichertem verglichen wird, damit ich weiß wer eingeloggt ist und wer nicht usw.
Calexico ist offline  
Alt 30.06.2004, 21:37  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Calexico
okay dann liegt's wohl am exit gleich ausprobieren!!
Das http://de.php.net/header solltest Du ebenfalls durchlesen:

Zitat:
Zitat von Handbuch
Anmerkung: HTTP/1.1 verlangt einen absoluten URI inkl. dem Schema, Hostnamen und absoluten Pfad als Argument von Location:, aber manche Clients akzeptieren auch relative URIs. Gewöhnlich können Sie mittels $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] und dirname() aus einem relativen Link einen absoluten URI selbst erstellen:
 
Alt 30.06.2004, 23:00  
Erfahrener Benutzer
 
Registriert seit: 08.11.2003
Beiträge: 139
Calexico
Standard

hab's zwar immer noch nicht ausprobiert aber die header die ich bisher immer ohne exit; gemacht habe, die am Ende eines php-scripts stehen funktioniern. liegt dann wahrscheinlich daran, dass nichts mehr folgt, ne??
Calexico ist offline  
Alt 30.06.2004, 23:05  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Calexico
liegt dann wahrscheinlich daran, dass nichts mehr folgt?
Ich habe mir den restlichen Quelltext nicht angeguckt. Weitere semantische Fehler sind nicht ausgeschlossen.

Prinzipiell isses so, daß der Client bei header('Location') ja weggeschickt wird. Damit hat sich dann die restliche Bearbeitung des Scriptes erledigt.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Download einer csv-Datei netty PHP-Fortgeschrittene 6 02.05.2008 15:53
https header und Cookie TailerD PHP Tipps 2008 5 26.01.2008 19:54
header() ??? TeazY PHP Tipps 2008 9 11.01.2008 15:40
header Probleme! Boennchen PHP Tipps 2006 5 01.02.2006 08:02
Probleme mit Email-Header (php-Mail) PHP Tipps 2006 6 20.01.2006 14:18
Probleme mit header() und include() und relativen Pfaden PHP Tipps 2005-2 3 08.10.2005 16:00
probleme mit header PHP Tipps 2005 15 29.05.2005 14:03
Problem: Cannot modify header information Alpha Centauri PHP Tipps 2005 11 25.04.2005 13:05
[Erledigt] Header Probleme beim Download PHP-Fortgeschrittene 4 15.03.2005 11:40
[Erledigt] email header probleme PHP-Fortgeschrittene 10 09.03.2005 22:09
header prob mit auth und smarty PHP Tipps 2005 4 07.03.2005 12:10
[Erledigt] Datei selber nach einer Abfrage senden, header() geht nicht? PHP Tipps 2005 2 23.02.2005 05:58
probleme mit include und header Rotti PHP Tipps 2004-2 18 27.12.2004 09:20
probleme mit header PHP Tipps 2004 6 18.09.2004 10:43
Warning: Cannot modify header... einbinden nicht möglich? PHP Tipps 2004 2 07.08.2004 15:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php header funktioniert nicht, header php keine ausgabe, php mit isset zwei header, header geht nicht, keine fehlermeldung, php if($action == \save\){, header geht nicht hinter if, header informationen in jpeg, $_get falscher login, \php\ \weiterleitung\ \ohne exit\, beenden des header email, php header() geht nicht

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:07 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.