Autor |
Beitrag |
Dahmsi
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 28.02.06 18:06
Hallo,
ich habe in PHP so versucht, eine neue Session zu starten:
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? 
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: 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
|
Verfasst: Di 28.02.06 18:19
mkinzler 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
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Di 28.02.06 18:40
Dahmsi 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
      
Beiträge: 1280
Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
|
Verfasst: 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
|
Verfasst: Di 28.02.06 19:15
Was ist ein Leerschritt?
Ich kenn nur Leerzeichen und Leerzeile 
|
|
Phobeus
      
Beiträge: 1280
Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
|
Verfasst: 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
      
Beiträge: 226
|
Verfasst: 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
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: 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... 
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
blackbirdXXX

      
Beiträge: 1077
Erhaltene Danke: 1
Ubuntu Dapper
|
Verfasst: 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
      
Beiträge: 226
|
Verfasst: 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
      
Beiträge: 86
|
Verfasst: Do 02.03.06 11:47
Ups hab gerade gesehen, dass das schon oben behandelt wurde
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
|
Verfasst: Do 02.03.06 17:14
Das mit dem @mysql_query hab ich zwar jetzt nicht verstanden - ist das nun gut oder nicht?
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
      
Beiträge: 443
Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
|
Verfasst: Do 02.03.06 17:58
Dahmsi hat folgendes geschrieben: | Das mit dem @mysql_query hab ich zwar jetzt nicht verstanden - ist das nun gut oder nicht?
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 ...
|
|