Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Fehlersuche

findet hier jemand einen Fehler? Der Header wird nicht richtig ausgeführt...

Code:                   In Zwischenablage kopieren (nur IE)
1">

Hier gehts zum Orginal Eintrag "Fehlersuche" im Forum

Antworten

Was heisst der Header wird nicht richtig ausgeführt?
Fehlermeldungen?
Error Reporting mal auf E_ALL gestellt?


2.

nein, kein error...es passiert einfach nichts...


3.

dann grenz den fehler mal mit nen paar echos etc ein ...


4.

hab ich auch schon gemacht...eine Zeile vor dem header wird das echo noch ausgegeben und nach den header auch...und wenn ich ein "exit;" setze, wird index.php (die seite, die mit dem header geöffnet werden sollte) auch nicht geöffnet...


5.

Weißt du, es macht keinen richtigen Spaß, wenn Hinweise ignoriert werden.

Ich habe dir schon in einem Thread zum gleichen Thema geschrieben, dass deine Überprüfung, ob der Login richtig war, sehr umständlich ist. Irgendwie wundert es mich, dass da überhaupt eine if-Anweisung ausgeführt wird.

Und Select * in Verbindung mit mysql_fetch_row ist wirklich nicht gut!


6.

wieso ist es nicht gut? wie kann man das denn einfacher machen?


7.

ähh..sorry dass ich mal so reinplatze und frage...
was machst du da???
Code:                   In Zwischenablage kopieren (nur IE)
2">

du durchläufst die ganze Datenbank um herrauszufinden ob ein username in der DB existiert???
Ich muss schon sagen performant wird dein Script nicht.
Verwende doch einfach
Code:                   In Zwischenablage kopieren (nur IE)
3">

ist leichter und wesentlich schneller ;)


8.

okay,ich baue es gerade mal ein, aber das problem mit dem header kannst du auch nicht lösen??


9.

warum wählst du in der abfrage erst alle user aus, wenn du nur einen mit einer bestimmten name/passwort-kombination suchst?
es bleibt auch ein rätsel, was du hier anstellst:
Code:                   In Zwischenablage kopieren (nur IE)
4">

das ist - sorry - absoluter schwachsinn. um durch ein resultset zu turnen bietet sich eine while-schleife an, und das auswerten irgendeiner spalte $i in verbindung mit "select *" ist glatter selbstmord. woher willst du denn wissen, in welcher reihenfolge die spalten zurückgegeben werden. die verwendung von mysql_fetch_assoc() ist a sehr viel sinnvoller:
Code:                   In Zwischenablage kopieren (nur IE)
5">

ganz allgemein könnte deine routine so aussehen (wenn du nur wissen willst, ob die user/pwd-kombination existiert):
Code:                   In Zwischenablage kopieren (nur IE)
6">

wenn du noch unterscheiden möchtest, ob zwar der benutzername existiert, aber das passwort falsch war, lässt du die abfrage nach dem passwort aus dem SQL-string raus und überprüfst die gleichheit von gespeichertem und übergebenem passwort im skript.


btw: es könnte nicht schaden, wenn du die einschlägige tutorials oder die doku anschaust. das abarbeiten von ergebnisdatensätzen gehört zu den absoluten grundlagen, und so, wie du dein ziel von hinten durch die brust ins auge zu erreichen suchst, hinterlässt du den eindruck, als wenn du nie einen blick auf genannte quellen geworfen hast. oder um es mit den worten von bundestrainer efthimios karamitsos auf einer kyu-prüfung zu sagen: "schöne kata. hast du dir die selbst beigebracht?"... ;-)


10.

ich denke was du unter "der Header wird nicht richtig ausgeführt" meinst ist, dass er warscheinlich die ganzen verschachtelten
(evtl. unnötigen) if-abfragen nicht durchläuft und das gewünschte Ziel erreicht.
Deshalb kann ich dir nur raten - schreib in jeder ifabfrage eine echo z.b. echo "if1", etc...und schau was am ende rauskommt

Standard-Antwort:
Richtig debuggen
1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
3. An den Anfang des Scriptes schreibt man die Zeile: error_reporting(E_ALL);
4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

Die Ausgaben per echo kann man sich ersparen, in dem man einen Debugger benutzt.


11.

Code:                   In Zwischenablage kopieren (nur IE)
7">

wenn ich das so einbaue, funktioniert es nicht...was mache ich falsch?


12.

tschuldigung, aber existiert in deiner tabelle eine spalte mit dem namen "felder" und "nick"???


13.

es existiert ein spalte mit "nick", was muss ich anstatt "felder" hinschreiben?


14.

na die Selection...das was du später ausgegeben haben willst, aber bitte kein * verwenden ;)


15.

was bedeutet * ?


16.

Du brauchst nur die Spalte auslesen, wo "admin" drinsteht. Denn dich interessiert doch eigentlich nur, ob der Login korrekt war - das prüfst du mit mysql_num_rows - und welche Rechte der user besitzt.


17.

* bedeutet, dass du alle spalten der Tabelle auswählst auch wenn du sie später garnicht benötigst.


18.

oke, das sind ja nur peanuts, die wir im moment besprechen, oder? es kann doch auch so funktionieren, wie ich es geschrieben habe, auch wenn es nicht so schön ist, oder?

Mein problem ist nur, dass der header nicht ausgeführt wird. das hat ja nichts mit dem anderen zu tun...oder doch?


19.

ich glaube, bevor zum header() kommen, sind erst einmal folgende grundlagen notwendig:
http://de2.php.net/mysql_query
http://dev.mysql.com/doc/refman/4.1/en/select.html


20.

Zitat:
oke, das sind ja nur peanuts, die wir im moment besprechen, oder? es kann doch auch so funktionieren, wie ich es geschrieben habe, auch wenn es nicht so schön ist, oder?

nein, das sind keine peanuts, sondern basics. es ist nichts persönlich gegen dich, aber du hast momentan anscheinend noch keine vorstellung davon, was du dort in der abfrage tust, oder wie deren syntax lautet. sicherlich kann man aus deinem codeungetüm etwas basteln, was leidlich funktioniert, nur macht es eben keinen sinn, wenn du nicht verstanden hast, wie es richtig geht. ansonsten stehst du beim nächsten mal mit dem gleichen problem auf dem matte.

Zitat:
Mein problem ist nur, dass der header nicht ausgeführt wird. das hat ja nichts mit dem anderen zu tun...oder doch?

klares jein. dein originäres problem ist, dass überhaupt nicht ersichtlich ist, wann was ausgeführt wird. es wird dir leichter fallen deinen code zu schreiben und zu debuggen, wenn du klare und deutliche konstrukte verwendest.


21.

ich versteht das nicht im 9ten post hat Alexander dir sogar ein Beispiel auf 10 Zeilen gepostet - wie dein login aussehen könnte und du schaust dir es garned an...
Wieso einfach wenns auch schwer geht, gelle :D


22.

Zitat:
Stefanie postete
hab ich auch schon gemacht...eine Zeile vor dem header wird das echo noch ausgegeben und nach den header auch...und wenn ich ein "exit;" setze, wird index.php (die seite, die mit dem header geöffnet werden sollte) auch nicht geöffnet...
Wenn Du ein echo vor den Header setzt, muesste header() einen "Fatal Error: Headers already sent" ausloesen. Hast Du den nicht gesehen? Hast Du "display_errors" ausgeschaltet?

http://nl3.php.net/manual/en/ref.errorfunc.php#ini.display-errors


23.

nein, habe den fehler nicht gesehen... und ich habe "display_errors" nicht ausgeschaltet, wenn dann nicht mit absicht...


24.

mach mal in die erste Zeile deines Scriptes folgendes error_reporting(E_ALL);


25.

reloader

dieses Script hilft mir nur teilweise weiter...ich möchte es nicht so lösen, wie er es gemacht hat...weisst du was, wenn du nicht helfen möchtest, dann lass es doch einfach!


26.

Na, dann schalte es mal mit Absicht an :)

Code:                   In Zwischenablage kopieren (nur IE)
8">




27.

ok - mach ich doch glatt!
Wenn du dein Script nicht performant haben willst, dann lass es doch einfach und bleib bei dem alten Trott


28.

es erscheint keine Fehlermeldung...


29.

Raetselhaft. Lass mal das hier laufen:

Code:                   In Zwischenablage kopieren (nur IE)
9">

Das muss einfach eine Fehlermeldung provozieren.


30.

Das wird ausgegeben:

Denn nicht sein kann, was nicht sein darf. Warning: Cannot modify header information - headers already sent by (output started at d:\www\www1183\test.php:5) in d:\www\www1183\test.php on line 6


31.

Das ist ok. Lass die ersten 2 Zeilen drin, dann weißt du, dass wenigstens die Fehlerausgabe funktioniert.

Dann beherzige unsere Ratschläge, ändere dein Script und beachte "richtig debuggen" aus Post 010.

Wenn es dann immer noch nicht passt, poste den geänderten Code und die Fehlerbeschreibung.


32.

oke...danke für die hilfe! Tut mir leid, wenn ich so doofe fragen stelle...mache die ersten schritte mit php...


Hier gehts zum Orginal Eintrag "Fehlersuche" im Forum
 
phpforum.de | Impressum