Zum Inhalt springen

PHP: Fehler bei Sessioninitialisierung


Empfohlene Beiträge

Hallo zusammen,

ich bin gerade dabei, eine Session samt Variablen in einen Loginvorgang einzubauen. Ein Teil des Quellcodes sieht folgendermaßen aus:

 

session_start();    


//Setzen der Sessionvariablen

$_SESSION["userid"] = $userid;

$_SESSION["Vorname"] = $Vorname;

$_SESSION["Nachname"] = $Nachname;

Aber irgendwie läuft das ganze nicht... :(

Bekomme immer folgende Fehlermeldungen:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at c:\wamp\htdocs\benutzerverwaltung\index.php:2) in c:\wamp\htdocs\benutzerverwaltung\login\check.php on line 81

Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

Zur Entwicklungsumgebung:

- Apache 1.3

- WinMySQLAdmin 1.4

- PHP 3

Liegt es vielleicht an meiner PHP-Version? - Aber das muss doch auch so gehen, oder?

:

Bin für jede Hilfe dankbar! :)

Gruß, Jusky

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nun ja, bevor ich die Session initialisiere, mache ich erst einmal eine DB-Abfrage, ob der User vorhanden ist, etc. Ist das der Fall, ziehe ich mir die Daten aus den Tabellen und schreibe sie in die Variablen, die ich der Session anschließend übergebe. - Alles in ein und demselben Skript. Ist das denn so verkehrt? :confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Solche Ausgaben habe ich aber nicht... Bevor ich session_start() aufrufe, überprüfe ich lediglich, ob der User existiert und wenn ja, dann ziehe ich die Daten aus den Tabellen... Mehr ist da nicht...

Hm, was kann denn sonst noch ein Fehler sein??? :(

Nachtrag:

Habe mich etwas bei der Entw.umgebung vertan: Das ganze läuft unter PHP 4.3.1.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also, mein Skript (check.php) sieht erst einmal folgendermaßen aus:


<?php

//Übergabe der POST-Variablen

$userid = $_POST["userid"];

$Pwd = $_POST["login_pwd"];


//Datenbankverbindung wird aufgebaut

...


//Prüfung, ob User existiert

...


if ($anzahl == 0)

{

   include "login_fehler.php";

}

else

{

   while ($row = mysql_fetch_array($result))

   {

      $ID = $row["ID"];

   }


   //Passwort wird verschlüsselt

   $Passwort = md5($Pwd);


   $check_user = mysql_query("Select * from benutzer_details where User_ID = \"" . $userid . "\" and Passwort = \"" . $Passwort . "\";");

   $number = mysql_num_rows($check_user);


   mysql_free_result($check_user);


   if ($anzahl == 0)

   {

      include "login_fehler.php";

   }

   else

   {

      //Die Daten des Benutzers werden aus der MySQL-DB ausgelesen

      $daten = mysql_query("Select * from benutzer_tbl where User_ID = \"" . $userid . "\";");


      while ($row = mysql_fetch_array($daten))

      {

         $Vorname = $row["Vorname"];

         $Nachname = $row["Nachname"];

      }

      mysql_free_result($daten);


      //Session wird initialisiert

      session_start();


      //Setzen der Sessionvariablen

      $_SESSION['userid'] = $userid;

      $_SESSION['Vorname'] = $Vorname;

      $_SESSION['Nachname'] = $Nachname;

   }

}

mysql_free_result($result);

mysql_close();

?>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Jusky

hast du irgendwelche Leerzeichen vor dem php initialize tag?

Ansonsten versuch mal die session als aller erstes zu starten.

Ich glaub mal irgendwo gelesen zu haben das es das erste is was du machen mußt.

Und wo das session_start im endeffeckt in deinem SourceCode steht beeinflußt dein Programm ja nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen


<?php
//Übergabe der POST-Variablen
$userid = $_POST["userid"];
$Pwd = $_POST["login_pwd"];

//Datenbankverbindung wird aufgebaut
...

//Prüfung, ob User existiert
...

if ($anzahl == 0)
{
include "login_fehler.php";
}
else
{
while ($row = mysql_fetch_array($result))
{
$ID = $row["ID"];
}

//Passwort wird verschlüsselt
$Passwort = md5($Pwd);

$check_user = mysql_query("Select * from benutzer_details where User_ID = \"" . $userid . "\" and Passwort = \"" . $Passwort . "\";");
$number = mysql_num_rows($check_user);

mysql_free_result($check_user);

if ($anzahl == 0) // <- hier ist auch ein denkfehler!! oben prüftst du ab ob anzahl == 0 ist und im elsezweig
//dieser abfrage fragst du es erneut ab obwohl die anzahl hier ja durch die abfrage am anfang nie diesen wert annehmen kann
{
include "login_fehler.php";
}
else
{
//Die Daten des Benutzers werden aus der MySQL-DB ausgelesen
$daten = mysql_query("Select * from benutzer_tbl where User_ID = \"" . $userid . "\";");

while ($row = mysql_fetch_array($daten))
{
$Vorname = $row["Vorname"];
$Nachname = $row["Nachname"];
}
mysql_free_result($daten);

//Session wird initialisiert
session_start();

//Setzen der Sessionvariablen
$_SESSION['userid'] = $userid;
$_SESSION['Vorname'] = $Vorname;
$_SESSION['Nachname'] = $Nachname;
}
}
mysql_free_result($result);
mysql_close();
?>
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich kann dir eins anbieten, das wenn mir mal deine php datei schickst ich sie hier mal durch den apache jag :)

Meistens sinds immer so FU fehler die sich irgendwo verstecken und einem den letzten nerv rauben :/

EDIT:

Ok, Jaraz hat recht, steht sogar noch breit oben dran :)

output started @ index.php on line 2

Ich sag ja, immer diese versteckten Fehler ^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, ich habe eine index.php, von der aus ich das Menü aufrufe... Im Menü selbst ist dann die login.php includet, die sich dann beim Einloggen auf die check.php bezieht.

Aber wie sollte ich das denn sonst lösen? Irgendwie muss ich doch die Dateien einbinden... Sorry, aber ich bin erst seit 3 Wochen an PHP dran... :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe jetzt das start_session an den Anfang der index.php gesetzt. Ich bekomme aber immer noch die Fehlermeldung:

Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hm, also irgendwie hat PHP was gegen mich...

Habe jetzt das login-Skript (mit der Eingabemaske) einzeln aufgerufen und per

<form action="check.php" method="POST"> die Variablen an das nächste Skript übergeben. Dort wird am Anfang die Session gestartet. Tja, aber der Fehler ist auch hier der gleiche wie oben... :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Jusky

Ok, habe mich jetzt mal umgehört und die Meldung ist wohl nicht so wichtig... Na ja, lass ich sie eben mal außer Acht... :rolleyes:

LG, Jusky

das ist aber nicht dein ernst oder`?

wenn der sagt das fehler bei den sessions sind, dann wirst du auf der nächsten seite nicht mit deinen werten und variablen aus der session arbeiten können, da diese ja dann nicht gespeichert wurden!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

editier mal die php.ini in c:/apache/php (bei nem windows system ^^ bei Linux weiß ich nimmer genau wo er die hinschreibt)

; You should do your best to write your scripts so that they do not require

; register_globals to be on; Using form variables as globals can easily lead

; to possible security problems, if the code is not very well thought of.

register_globals = On

statt

; You should do your best to write your scripts so that they do not require

; register_globals to be on; Using form variables as globals can easily lead

; to possible security problems, if the code is not very well thought of.

register_globals = Off

Ansonsten weiß ich auch nicht mehr weiter, aber laut fehler text sollte dann das behoben sein.

Alternativ Lösung is das ganze über Cookies zu lösen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...