Problem mit Login mit Session

HUBBLE hat gesagt.:
Warning: Cannot modify header information - headers already sent by (output started at /home/www/web48/html/t2/login.php:21) in /home/www/web48/html/t2/login.php on line 34Also dieser Fehler kommt bei mir immer, wenn ich session_start(); nicht vor dem HTML-Tag <HEAD> gestartet habe.
nur dass die login.php kein html tag besitzt... geschweige denn einen head

das bin ich ja aba jetz los (thx)
nur das die weiterleitung über
header ("Location: intern.php");
nich tun will...
 
Zuletzt bearbeitet:
Xel Guray hat gesagt.:
Code:
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_nickname"] = $data["Nickname"];
 
   header ("Location: intern.php");
}
Da würde ich mal das probieren:
PHP:
if (mysql_num_rows ($result) > 0)
 {
   print "1<br>";
   // Benutzerdaten in ein Array auslesen.
   $data = mysql_fetch_array ($result);
   print "2<br>";
   print $data["Id"]."<br>";
   print $data["Nickname"]."<br>";
   // Sessionvariablen erstellen und registrieren
   $_SESSION["user_id"] = $data["Id"];
   $_SESSION["user_nickname"] = $data["Nickname"];
   print "3<br>";
   header ("Location: intern.php");
   print "4<br>";
 }
Dann kannst Du sehen, ob er Dir alles anzeigt (1-4 und die Daten aus $data).
Wenn ja, würde ich mal probieren irgendwo anders hin umleiten zu lassen (z. B. http://www.google.de).
Wenn nicht, dann hängt er irgendwo fest.
Kannst das ja mal probieren, ...

redlama
 
:confused:
Ausgabe:

Code:
1
2


3

 on line Warning: Cannot modify header information - headers already sent by (output started at /home/www/web48/html/t2/login.php:23) in /home/www/web48/html/t2/login.php33
 4

also gut jetz schon wieder diesen mist ? und wieso vorher net? Nullpeil!
 
Xel Guray hat gesagt.:
on line Warning: Cannot modify header information - headers already sent by (output started at /home/www/web48/html/t2/login.php:23) in /home/www/web48/html/t2/login.php33
Das kommt daher, weil Du was über print ausgegeben hast, obwohl Du "header ("Location: intern.php");" hast, die beißen sich, war ja auch nur zur Anzeige.
Aber $data["Id"] und $data["Nickname"] wurden nicht ausgegeben.
Du solltest auch vor "$data = mysql_fetch_array ($result);" das machen: "$data = Array();".

redlama
 
session_start(); MUSS IMMER ganz oben in der Seite stehen. Ich hatte das Problem auch. Seite etwas umstrukturiert, damits immer oben steht und alles is super. :)

Also da darf nix drüber stehen, auch nicht, indem man es in eine andere Seite included oder so.
 
also folgender masen?
Code:
  if (mysql_num_rows ($result) > 0)
  {
     print "1<br>";
     // Benutzerdaten in ein Array auslesen.
     $data = Array();
     $data = mysql_fetch_array ($result);
     print "2<br>";
     print $data["Id"]."<br>";
     print $data["Nickname"]."<br>";
     // Sessionvariablen erstellen und registrieren
     $_SESSION["user_id"] = $data["Id"];
     $_SESSION["user_nickname"] = $data["Nickname"];
     print "3<br>";
     header ("Location: intern.php");
     print "4<br>";
  }
hat nix geändert
 
Ah ich errinere mich damit hatte ich auch ein Problem. Fällt mir grad nicht ein, wie ichs gelöst habe und ich bin auf der Arbeit. Wenn ich zu hause bin, schaue ich aber gern in mein Script und poste nochmal, wenn du bis dahin keine Lösung hast.

Ich kann schonmal sagen, daß ich header nicht verwende.

Jede Seite hat bei mir denselben header (header.inc.php)

PHP:
session_start();

<?PHP
// Verbindung zur Datenbank aufbauen
require "connect.inc.php";

// Login-System
include "sessionhelpers.inc.php";

// Prüfung der Anmeldedaten
if (isset($_POST['login']))
{
    $userid=check_user($_POST['username'], $_POST['userpass']);
    if ($userid!=false)
        login($userid);
    else
        echo "<FONT color='red'>Ihre Anmeldedaten waren nicht korrekt</FONT><BR><BR>";
}

// Login-Formular anzeigen wenn nicht eingeloggt
if (!logged_in())
{
    ?>
    <form method="post" action="index.php?peri=1">
        Benutzername: <input name="username" type="text" class="eingabe"> Passwort: <input name="userpass" type="password" class="eingabe"><br><br>
        <input name="login" type="submit" value="Einloggen" class="eingabe">
    </form>
    <?PHP
}

Und dann zeige ich den internen Teil nur wenn man eingeloggt ist:

PHP:
if (logged_in())
{
interner teil
}
 
Zuletzt bearbeitet:
joa das is nett... thx

bliebe nur noch die frage wieso er mir die $data nicht bereit is auszugeben...

und ob das später störend wirken wird, wenn die weiterleitung dann klappt.
 
Zurück