Autor Beitrag
Dahmsi
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 28.02.06 18:06 
Hallo,
ich habe in PHP so versucht, eine neue Session zu starten:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<?php
$pw=$_POST['pw'];
$name=$_POST['name'];
$res=mysql_query("SELECT * FROM user WHERE name='".$name."' AND password='".SHA1($pw)."'");
if (mysql_affected_rows()==1) 
{
  session_start();
  echo session_name();
}
  
?>

Ich bekomm aber immer folgende Ausgabe:
Zitat:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /srv/www/htdocs/web123/html/index.php:6) in /srv/www/htdocs/web123/html/adminworks.php on line 7

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /srv/www/htdocs/web123/html/index.php:6) in /srv/www/htdocs/web123/html/adminworks.php on line 7
PHPSESSID

Hat jemand ne Idee? :gruebel:
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Di 28.02.06 18:14 
Der Fehler sagr, daß schon eine Ausgabe an den Client gemacht wurde; vor dem Header darf keine Ausgabe gemacht werden. In deinem Code-Segment kanne ich auch keine Ausgabe sehen! Ist das der ganze Code oder hat die Seite vorher schon HTML-Code?

Im Notfall kannst du die Output-Bufferung aktivieren.

_________________
Markus Kinzler.
Dahmsi
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 28.02.06 18:19 
user profile iconmkinzler hat folgendes geschrieben:
Der Fehler sagr, daß schon eine Ausgabe an den Client gemacht wurde; vor dem Header darf keine Ausgabe gemacht werden. In deinem Code-Segment kanne ich auch keine Ausgabe sehen! Ist das der ganze Code oder hat die Seite vorher schon HTML-Code?

Ja hat sie.
Ich hab den Befehl session_start() jetzt ganz oben in die index.php geschrieben und dann kommt der Fehler nicht mehr.
Komisch. Warum ist das so?
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Di 28.02.06 18:40 
user profile iconDahmsi hat folgendes geschrieben:
Warum ist das so?

Das liegt daran, dass beim Session_start Cookies gesendet werden, die immer in den HTTP-Headern stehen. wenn aber schon eine Ausgabe kam, sind die Header schon gesendet und Session_start geht nich mehr.

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: Di 28.02.06 19:12 
Und gleich vorbeugend, weil einem dies die Seele kosten kann, wenn man inlcudes verwendet. Alles nach dem "?> " ist wieder HTML-Code. Klar. Damit ist auch der Leerschritt gemeint, der am Ende ist... Also immer brav achten, dass niemals danach ein Leerschritt steht. Mancher Editor setzt diesen und wenn man mit Sessions arbeitet, kann einem dies in den Rand des Wahnsinns treiben.

_________________
"Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."
Dahmsi
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 28.02.06 19:15 
Was ist ein Leerschritt?
Ich kenn nur Leerzeichen und Leerzeile ;)
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: Di 28.02.06 20:01 
de.wikipedia.org/wiki/Leerschritt
Wikipedia hilft weiter. Es handelt sich um ein Synonym zu Leerzeichen und ich bin gerade verwundert, dass dies zu Fragezeichen führt. Gibts nun die erste Generation, die nicht mehr weiß, was eine Schreibmaschine ist? *sg ;)

_________________
"Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."
alcaeus
half ontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 226



BeitragVerfasst: Mi 01.03.06 13:50 
Weiters solltest du nicht mysql_query() schreiben, sondern @mysql_query(). Dies verhindert, dass Fehlermeldungen ausgegeben werden, die wiederum Probleme mit der Session verursachen ;)

Greetz
alcaeus
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Mi 01.03.06 19:13 
Ja genau, schön alle Fehlermeldungen unterdrücken.
Wie wollen doch niemand zeigen, was für einen Mist wir gescriptet haben... :roll:

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
blackbirdXXX

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: Mi 01.03.06 21:57 
omg. @mysql_query ist der typische PHP Weg. Wenn schon PHP, dann bitte schön zuerst mal ein Exception system zurechtlegen. Danke.

_________________
Klein, schwarz und ärgert Techniker? Jumper!
alcaeus
half ontopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 226



BeitragVerfasst: Do 02.03.06 10:48 
@GTA-Place: es wird empfohlen, die Fehlermeldungen in Scripts auf Produktionsservern komplett zu unterdruecken - nur mal um es so zu sagen.
Weiters, @mysql_query() ist perfekt normal. Ob ich ueber set_error_handler() auf den Fehler reagieren will, oder einfach ueber das Ergebnis von mysql_query() und dann evtl. ueber mysql_error() rausfinden will was los ist, ist dasselbe.

Und ausserdem brauchts in PHP kein Exception-Handling, PHP wirft naemlich keine Exceptions sondern Fehler, Warnungen, Hinweise, usw. ;)

Greetz
alcaeus
kabizolis
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 86



BeitragVerfasst: Do 02.03.06 11:47 
Ups hab gerade gesehen, dass das schon oben behandelt wurde :-P

soweit ich weiss muss
session_start()
immer als erstes in einem dokument vorkommen....
du kannst nicht die session starten, nachdem andere befehle ausgeführt wurden... beginn mit

<?php session_start()
//weitere befehle
Dahmsi
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 02.03.06 17:14 
Das mit dem @mysql_query hab ich zwar jetzt nicht verstanden - ist das nun gut oder nicht? :gruebel:

Ich will nun mit Session-IDs eingeloggte User identifizieren. Wie muss ich da vorgehen. Ich dachte mir, beim Login die SID in die Userdatenbank einzutragen und dann bei jedem neuen Seitenaufruf die aktuelle SID auszulesen, in der DB nachschauen wer die hat - und der ist es dann :-)
Ist das gut so?

Und wann bekommt man eine neue SID zugeteilt?
Grendel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 443

Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
BeitragVerfasst: Do 02.03.06 17:58 
user profile iconDahmsi hat folgendes geschrieben:
Das mit dem @mysql_query hab ich zwar jetzt nicht verstanden - ist das nun gut oder nicht? :gruebel:

Ich will nun mit Session-IDs eingeloggte User identifizieren. Wie muss ich da vorgehen. Ich dachte mir, beim Login die SID in die Userdatenbank einzutragen und dann bei jedem neuen Seitenaufruf die aktuelle SID auszulesen, in der DB nachschauen wer die hat - und der ist es dann :-)
Ist das gut so?

Und wann bekommt man eine neue SID zugeteilt?


Seit ihr wirklich nicht in der Lage mal in die PHP-Doku zu gucken?!

Hier: www.php.net/manual/en/ref.session.php steht doch nun wirklich alles haarklein beschrieben. Auf Deutsch gibt es das ganze bei Bedarf auch: www.php.net/manual/de/ref.session.php

Bis neulich ...