Seite 1 von 2

Hab wieder etwas, was nicht funktioniert ;)

Verfasst: 11.08.2004 09:47
von frieder

Code: Alles auswählen

<?php

include("db.php");
mysql_connect("$host","$dbuser","$dbpass");
mysql_select_db("$db");
$sql="SELECT passwort, name FROM users WHERE name='$name' AND passwort='$passwort'";
$result=mysql_query($sql) OR die("Dieser User existiert mit diesem Passwort nicht.");
while ($row=mysql_fetch_assoc($result)) {
if ($row[passwort] == $passwort) {
echo "Login erfolgreich!";
session_register("name");
echo "<a href=\"index.php\">Zum Index</a>";
}
else {
echo "Zugriff verweigert: Falsches Passwort oder falscher Benutzername";
}
}

mysql_close();
?>

Da kommt bei mir die Fehlermeldung:
Warning: session_register(): Cannot send session cookie - headers already sent by (output started at /var/www/s14u19/html/cms/login_ausfuhren.php:5) in /var/www/s14u19/html/cms/login_ausfuhren.php on line 15

Warning: session_register(): Cannot send session cache limiter - headers already sent (output started at /var/www/s14u19/html/cms/login_ausfuhren.php:5) in /var/www/s14u19/html/cms/login_ausfuhren.php on line 15


Zu sehen auch auf www.f-philipps.com (Testaccount ist vorhanden)

Verfasst: 11.08.2004 10:52
von Blutgerinsel
Du hast dir doch hoffentlich die Fehlermeldung durchgelesen oder?

Diese bedeutet soviel wie das der HTTP Header bereits gesendet wurde und dieser nicht nochmals gesendet werden kann.

Ursachen können hierbei Leerzeichen oder sonstige Zeichen die ausgegeben werden sein.

Erst wenn session_start(); geparst wurde darf eine Ausgabe erfolgen ansonsten kommt es zur besagten Fehlermeldung.......

Noch ein Tipp am Rande session_register wird nicht mehr verwendet durch die Ablösung von

Code: Alles auswählen

//init
$_SESSION['blabla']="blubb";

//delete
unset($_SESSION['blabla']);

Verfasst: 11.08.2004 11:24
von frieder
Die Fehlermeldung ist weg! Aber es klappt immer noch nicht...

$_SESSION['blabla']="blubb";
Wofür steht da das blabla und wofür das blubb?

edit:
Jetzt funktionierts (Username wird wieder angezeigt!)
dafür kommt jetzt diese fehlermeldung auf jeder seite:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/s14u19/html/cms/guestbook.php:2) in /var/www/s14u19/html/cms/header.php on line 13

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/s14u19/html/cms/guestbook.php:2) in /var/www/s14u19/html/cms/header.php on line 13
Hier die Betreffende Zeile:

Code: Alles auswählen

</head>
<body bgcolor="#656565" link="#ffffff" vlink="#ffffff" alink="#ffffff"> <font color="#ffffff">
<table><tr><td width="100"></td><td>
<img src="images/banner.png"></td></tr></table>
<?php
[color=red]session_start();[/color]
echo("Hi, $name");
?>
<table>
Und ich verstehe die Fehlermeldung immer noch nicht ;)

Verfasst: 11.08.2004 12:12
von Blutgerinsel
Man nehme eine PHP Datei wo gerne die Session initialisieren möchte und schreibe zuerstsession_start(); da rein und erst dann dürfen Ausgaben erfolgen darunter fallen alle Zeichen selbst Leerzeichen in betreffenden PHP Dateien vor Session_start lösen einen Header sent aus.

was du mit

Code: Alles auswählen

[color=red]session_start();[/color]
machen willst ist mir ein Rätsel sieht nach BBCode aus. Abgesehen davon ist der Rückhgabe Wert ein Booleon sprich true or false.

Mein Beispiel definiert eine Session Variable blabla mit dem String Inhalt blubb......

Knowledge Base: Was bedeutet Headers already sent

Verfasst: 11.08.2004 12:38
von frieder
Das color usw. war nur um die betreffende Zeile zu kennzeichnen!
Wer kann denn wissen, dass det im Code Modus nicht geht? ;)

Verfasst: 11.08.2004 13:23
von Fabse
Ich würd das ganze mal so schreiben:

Code: Alles auswählen

<?php
session_start();
include("db.php");

mysql_connect("$host", "$dbuser", "$dbpass");
mysql_select_db("$db");

$sql = "SELECT passwort, name FROM users WHERE name='" . $_REQUEST['name'] . "' AND passwort='" . $_REQUEST['passwort'] . "'";
$result = mysql_query( $sql ) OR die( "Dieser User existiert mit diesem Passwort nicht." );

while( $row = mysql_fetch_array( $result ) ) {

  if ( $row[passwort] == $_REQUEST['passwort'] ) {
    
    $_SESSION['username'] = $row['name'];
    echo "Login erfolgreich!<br>"; 
    echo "<a href=\"index.php\">Zum Index</a>";
  }
  else {
    echo "Zugriff verweigert: Falsches Passwort oder falscher Benutzername";
  }
  
}

mysql_close();
?>
Hab dir das ganze auch gleich mal Formartiert.


Gruß, Fabse

Verfasst: 11.08.2004 17:59
von Dennis63
Megafriedel hat geschrieben:Und ich verstehe die Fehlermeldung immer noch nicht
Was verstehst Du denn nicht?

Analyse:

Warning: -> Deutsch:Warnung
session_register(): -> Funktion von PHP
Cannot send session cookie -> Deutsch: Kann Session Cookie nicht senden
headers already sent by -> Deutsch: Header(*) bereits gesendet von
output started at -> Deutsch: Ausgabe gestartet durch
????:## -> Erklärung: Datei und Zeile, die für den Fehler verantwortlich ist
in ???? on line ## -> Erklärung: Datei und Zeile, die den Fehler bemerkt und ausgegeben hat.


Wörterklärung:

Header: Der "Kopfbereich" einer Übertragung im Internet. Er bestimmt, ob es eine Text-Datei ist, ein Bild oder eine EXE Datei.

---
Jetzt verständlich?

Verfasst: 12.08.2004 19:27
von frieder
ok, soweit hab ichs verstanden, allerdings versteh ichs immer noch nicht warum bei dem hier:

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>MainZone.de.vU</title>
</head>
<body bgcolor="#656565" link="#ffffff" vlink="#ffffff" alink="#ffffff"> <font color="#ffffff">
<table><tr><td width="100"></td><td>
<img src="images/banner.png"></td></tr></table>
<?php
session_start();
echo("Hi, $name");
?><table>
Trotzdem diese Fehlermeldung angezeigt wird: www.f-philipps.com
Eine letzte Bitte: Schreibt mir das so um, dass es richtig ist ;) ;)

@ Fabse: danke! Habs 1:1 Kopiert und jetzt klappt alles beim Login!
Und eigentlich funktioniert auch der Rest (Die Ausgabe funktioniert ja..)
Nur die Fehlermeldungen stören noch ;)

Verfasst: 12.08.2004 20:13
von Fabse
Nochmals:

vor session_start(); Darf nur <?php stehen sonst nix!!! Kein HTML Code, kein Leerzeich, garnix!!

So müsste es stimmen:

Code: Alles auswählen

<?php
session_start();
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>MainZone.de.vU</title>
</head>
<body bgcolor="#656565" link="#ffffff" vlink="#ffffff" alink="#ffffff"> <font color="#ffffff">
<table><tr><td width="100"></td><td>
<img src="images/banner.png"></td></tr></table>
<?php
echo("Hi, $name");
?><table>

Verfasst: 12.08.2004 20:18
von frieder
hm.. www.f-philipps.com
Hab ich beim kopieren was falsch gemacht?