Hab wieder etwas, was nicht funktioniert ;)

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
frieder
Mitglied
Beiträge: 836
Registriert: 06.03.2004 21:36
Wohnort: Gifhorn

Hab wieder etwas, was nicht funktioniert ;)

Beitrag 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)
Mit freundlichen Grüßen
Frieder
Ex-1. April Admin von phpBB.de :D
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag 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']);
Benutzeravatar
frieder
Mitglied
Beiträge: 836
Registriert: 06.03.2004 21:36
Wohnort: Gifhorn

Beitrag 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 ;)
Mit freundlichen Grüßen
Frieder
Ex-1. April Admin von phpBB.de :D
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag 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
Benutzeravatar
frieder
Mitglied
Beiträge: 836
Registriert: 06.03.2004 21:36
Wohnort: Gifhorn

Beitrag von frieder »

Das color usw. war nur um die betreffende Zeile zu kennzeichnen!
Wer kann denn wissen, dass det im Code Modus nicht geht? ;)
Mit freundlichen Grüßen
Frieder
Ex-1. April Admin von phpBB.de :D
Benutzeravatar
Fabse
Mitglied
Beiträge: 1401
Registriert: 02.06.2003 15:10
Wohnort: Klagenfurt
Kontaktdaten:

Beitrag 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
Dennis63
Ehemaliges Teammitglied
Beiträge: 2597
Registriert: 02.07.2003 18:46

Beitrag 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?
Benutzeravatar
frieder
Mitglied
Beiträge: 836
Registriert: 06.03.2004 21:36
Wohnort: Gifhorn

Beitrag 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 ;)
Mit freundlichen Grüßen
Frieder
Ex-1. April Admin von phpBB.de :D
Benutzeravatar
Fabse
Mitglied
Beiträge: 1401
Registriert: 02.06.2003 15:10
Wohnort: Klagenfurt
Kontaktdaten:

Beitrag 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>
Benutzeravatar
frieder
Mitglied
Beiträge: 836
Registriert: 06.03.2004 21:36
Wohnort: Gifhorn

Beitrag von frieder »

hm.. www.f-philipps.com
Hab ich beim kopieren was falsch gemacht?
Mit freundlichen Grüßen
Frieder
Ex-1. April Admin von phpBB.de :D
Antworten

Zurück zu „Coding & Technik“