Header Location funk nicht

ahh

Mitglied
Hallo,

sitze jetzt schon Stunden vor dem Script und finde den Fehler nicht.

Also ich habe festgestellt das es am Header ("Location: intern.php") liegen muss.
Dies wird irgendwie nicht bearbeitet. (nur im login.php)

Wenn ich mich anmelde kommt nur ein weißes Fenster.

Rufe ich nun manuell das intern.php Script auf sind alle Daten zu sehen.
Gehe dann mit Ausloggen raus.

Wenn ich mich mit irgend einem nicht in der Datenbank befindlichen Text anmelde kommt auch nur ein weißes Fenster.

Hier mal die login.php

PHP:
<?php session_start ();
// Session starten
$table = "imokunden";
include 'configdb.php';
// Datenbankverbindung aufbauen 
$connectionid = mysql_connect ("$host", "$user", "$pw"); 
if (!mysql_select_db ("$database", $connectionid)) 
{ 
die ("Keine Verbindung zur Datenbank"); 
} 
$sql = "SELECT ". 
"id, name, firma, strasse, ort, plz, emailfirma, firmentelefon, kontaktperson, kontaktpersontelefon, emailkontaktperson, passwort, benutzerid ,firmabild ". 
"FROM ". 
"$table ". 
"WHERE ". 
"(name like '".($_REQUEST["xname"])."') AND ". 
"(passwort = '".($_REQUEST["pwd"])."')"; 
$result = mysql_query ($sql); 
#if (mysql_query($sql))
# echo "Vorgang erfolgreich.";
#else {
# echo"Ein Fehler ist aufgetreten:<br>
# SQL: $sql<br><br> ".mysql_error();
#}
#echo "test___$xname";

if (mysql_num_rows ($result) > 0) 
{ 
// Benutzerdaten in ein Array auslesen. 
$data = mysql_fetch_array ($result); 
// Sessionvariablen erstellen und registrieren 
$_SESSION["user_id"] = $data["id"]; 
$_SESSION["user_name"] = $data["name"]; 
$_SESSION["user_firma"] = $data["firma"]; 
$_SESSION["user_strasse"] = $data["strasse"]; 
$_SESSION["user_ort"] = $data["ort"]; 
$_SESSION["user_plz"] = $data["plz"]; 
$_SESSION["user_emailfirma"] = $data["emailfirma"]; 
$_SESSION["user_firmentelefon"] = $data["firmentelefon"]; 
$_SESSION["user_kontaktperson"] = $data["kontaktperson"]; 
$_SESSION["user_kontaktpersontelefon"] = $data["kontaktpersontelefon"]; 
$_SESSION["user_emailkontaktperson"] = $data["emailkontaktperson"]; 
$_SESSION["user_benutzerid"] = $data["benutzerid"];
$_SESSION["user_firmabild"] = $data["firmabild"];

header ("Location: intern.php"); 
} 
else 
{ 
header ("Location: formular.php?fehler=1"); 
}



Alle dateien sind im selben Ordner nur die Maske für die Datenausgabe ist wo anders. Aber die wird ja auch korrekt angezeigt wenn ich die intern.php manuell aufrufe.

Mfg
Thomas
 
Zuletzt bearbeitet von einem Moderator:
Welchen Browser benutzt du?

Du solltest es mal mit absoluten URLs versuchen, sprich:
PHP:
header("Location: http: //www.deine.sei.te/intern.php");
 
Zuletzt bearbeitet von einem Moderator:
Hi, also ich wüsste es auch nicht.. aber versuchs mal so, indem du bei
PHP:
header("Location:xxxxx.php");
keinen Abstand nach dem Doppelpunkt machst.
Ansonsten sind dir irgendwie auf deinem Space die Rechte nicht gegeben...

Gruss Michael
 
Das space nach dem : in einem header ist soweit ich weiß nach HTTP protokoll pflicht, also NICHT weg lassen.

entsprechend dieses protokoll welches übrigens in RFC 2616 nachzulesen ist, muss in einem location header eine ABSOLUTE URI benutzt werden.

das heißt die form heißt zwingend:
header("Location: http://www.domain.de/pfad/datei.ext");
 
Absoluten Url

Hallo,


das mit der absoluten Url habe ich ausprobiert.

Geht nicht.

Zur Anmerkung noch im logout.php wird der Header auch aufgerufen und dort ist die gleiche schreibweise und funktioniert wunderbar.

Nur alles was ich in der login.php schreibe, ob jetzt z.b.
mit oder ohne Absolute Url es ist anscheinend egal.
header ("Location: inter.php"); oder
header ("Location: login.php"); oder
header ("Location: logout.php"); oder was auch immer
es wird nur hier im login.php nicht ausgeführt warum auch immer.



Mfg
Thomas
 
Erwarte nicht das dir Browser wie Conquerror, Mozilla, lynx oder ähnliche das abkaufen. auch wget wird vermutlich an sowas scheitern.
 
hmm,

@Chibisuke
Unqualifizierter gehts nicht, oder? Was haben die Clients denn mit der ausführung von serverseitigen Scripten zu tun ? *kopfschüttel*

@aah

wie sieht denn das Script intern.php aus. Ich meine du wirst ja offensichtlich weitergeleitet, wenn die Seite dann weiss bleibt hängt es eher am aufgerufenen Script als am aufrufenden, denne ine leere Seite erscheint nicht einfach so. Wie ist denn die URL der leeren Seite ? Ist da vieleicht auch was mit Sessions und die Sessionwerte lassen es einfach nicht zu dass du drauf darfst ?

Dein Script sieht nämlich nciht unbedingt verkehrt aus.
 
Hier mal das ganze...

Hallo,

habe das Script von Tutorialhttp://www.tutorials.de/tutorials9684.html .


Habe es angepasst und so sieht es nun aus.
PHP:
____________________________________________________
Formular.php:
____________________________________________________

<?php session_start ();
if (isset ($_REQUEST["fehler"])) 
{ 
  echo "Die Zugangsdaten waren ungültig."; 
} 
?> 
<form action="login.php" method="post"> 
  Name: <input type="text" name="xname" size="20"><br> 
  Kennwort: <input type="password" name="pwd" size="20"><br> 
  <input type="submit" value="Login"> 
</form> 
</body> 
</html>

____________________________________________________
Login.php
____________________________________________________

<?php session_start ();
// Session starten
$table = "imokunden";
include 'configdb.php';
// Datenbankverbindung aufbauen 
$connectionid = mysql_connect ("$host", "$user", "$pw"); 
if (!mysql_select_db ("$database", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
} 
$sql = "SELECT ". 
    "id, name, firma, strasse, ort, plz, emailfirma, firmentelefon, kontaktperson, kontaktpersontelefon, emailkontaktperson, passwort, benutzerid ,firmabild ". 
  "FROM ". 
    "$table ". 
  "WHERE ". 
    "(name like '".$_REQUEST["xname"]."') AND ". 
    "(passwort = '".($_REQUEST["pwd"])."')"; 
$result = mysql_query ($sql); 
#if (mysql_query($sql))
# echo "Vorgang erfolgreich.";
#else {
#  echo"Ein Fehler ist aufgetreten:<br>
#  SQL: $sql<br><br> ".mysql_error();
#}
#echo "test___$xname";

if (mysql_num_rows ($result) > 0) 
{ 
    // Benutzerdaten in ein Array auslesen. 
  $data = mysql_fetch_array ($result); 
  // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["id"]; 
  $_SESSION["user_name"] = $data["name"]; 
  $_SESSION["user_firma"] = $data["firma"]; 
  $_SESSION["user_strasse"] = $data["strasse"]; 
  $_SESSION["user_ort"] = $data["ort"]; 
  $_SESSION["user_plz"] = $data["plz"]; 
  $_SESSION["user_emailfirma"] = $data["emailfirma"]; 
  $_SESSION["user_firmentelefon"] = $data["firmentelefon"]; 
  $_SESSION["user_kontaktperson"] = $data["kontaktperson"]; 
  $_SESSION["user_kontaktpersontelefon"] = $data["kontaktpersontelefon"]; 
  $_SESSION["user_emailkontaktperson"] = $data["emailkontaktperson"]; 
  $_SESSION["user_benutzerid"] = $data["benutzerid"];
  $_SESSION["user_firmabild"] = $data["firmabild"];
  header ("Location: intern.php");
} 
else 
{ 
  header ("Location: formular.php?fehler=1");
  } 
____________________________________________________
checkuser.php
____________________________________________________

<?php session_start (); 
if (!isset ($_SESSION["user_id"])) 
{ 
  header ("Location: formular.php"); 
} 


____________________________________________________
intern.php
____________________________________________________

<?
include ("checkuser.php"); 

echo $id;
echo "Intern";
#include ("../site/html/header_eingelogt.php");
include ("../site/html/body_eingelogt.php");
include ("../site/html/footer_drei.html");

____________________________________________________
logout.php
____________________________________________________


<?php 
// Wird ausgeführt um mit der Ausgabe des Headers zu warten. 
ob_start (); 

session_start (); 
session_unset (); 
session_destroy (); 

header ("Location: formular.php"); 
ob_end_flush (); 
?>

vieleicht hilft das weiter..



Mfg
Thomas
 
Zuletzt bearbeitet von einem Moderator:
Re: hmm,

Original geschrieben von JoelH
@Chibisuke
Unqualifizierter gehts nicht, oder? Was haben die Clients denn mit der ausführung von serverseitigen Scripten zu tun ? *kopfschüttel*

Was hatt bitte ein location header mit server side zu tun? außer das er vom server an den client geschitzt wird nämlich gar nix, das heißt der der hier nicht qualifiziert ist zu beurteilen wer qualifiziert ist etwas darüber auszusagen der bist du.

Ich zitiere:
RFC2616 - HTTP 1.1 - paragraph 14.30
publication: W3C - June 1999

14.30 Location

The Location response-header field is used to redirect the recipient to a location other than the Request-URI for completion of the request or identification of a new resource. For 201 (Created) responses, the Location is that of the new resource which was created by the request. For 3xx responses, the location SHOULD indicate the server's preferred URI for automatic redirection to the resource. The field value consists of a single absolute URI.

Location = "Location" ":" absoluteURI

An example is:

Location: http://www.w3.org/pub/WWW/People.html

Alles was diesem Protokoll wiederspricht, kann und wird von den meisten Browsern IGNORIERT

Dementsprechend ist die form
header("Location: index.php"); schlichtweg UNGÜLTIG, und sie funktioniert auch nicht mit den meisten Browsern, der einzige mit bekannte Browser der sie trotzdem verarbeitet ist der IE, und jede die den IE über ActiveX benutzen.
 
Zuletzt bearbeitet:
Zurück