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.

Session Neuling hat eine Frage :)

Hallo!

Wie der Titel schon aussagt habe ich mich heute ausführlicher mit Sessions beschäftigt. Jetzt habe ich etwas programmiert, nur mag es mich irgendwie nicht, seht es euch selbst an:

Passwort Kontrollieren password.php

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

Der Adminbereich admin.php
Code:                   In Zwischenablage kopieren (nur IE)
2">

nur lässt sich jetzt auch mit admin.php die seite aufrufen und sie wird auch ohne vorher das passwort eingegeben zu haben angezeigt. Jedoch wenn ich das passwort eingebe erscheint keine Fehlermeldung das ein Fehler in password.php oder admin.php wäre...

Fehlt irgendein Befehl?


ich hoffe auf euren rat :(
Hier gehts zum Orginal Eintrag "Session Neuling hat eine Frage :)" im Forum

Antworten

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

Damit weißt du was zu und überprüfst nichts, da musst du schon == verwenden.


2.

also mit
Code:                   In Zwischenablage kopieren (nur IE)
4">

funktioniert das dann ganz sicher?


3.

und session_start() muß ganz nach oben

und weiterleiten würd ich mit header Location

und error_reporting(E_ALL); oben hin,
damit Du Syntaxfehler auch angezeigt bekommst.


4.

Weiß ich nicht, ob das ganz sicher geht, aber das ist schonmal ein Fehler.


5.

ok es funktioniert

naja fast

jetzt habe ich == gemacht, und wenn ich mich jetzt mit dem richtigen passwort einlogge, dann bekomme ich bei admin.php auch die meldung "Dafür haben Sie keine Berechtigung!"

An was könnte das liegen??


6.

An einem fehlerhaften Script.


7.

achja ne danke -.-

habs schon selber gelöst, aber andere frage: wie lang gilt so eine session eigentlich und kann man das steuern?


8.

Du prüfst ja auch auf den falschen string (einmal groß geschrieben und einmal klein: 'eine Nummer'

Hast Du mein Posting eigentlich gelesen ?

Wenn nicht, dann kann ich mir die Antworten hier sparen.


9.

neinnein das hab ich nur hier zensiert, denn wenn man logisch schlussfolgern kann, dann kommt man drauf das das für meine shoutbox is, und die adresse steht ja im thread ein bisschen weiter unten ;)


10.

Wieso willst du nicht ins Handbuch gucken ?

Lege mal am besten solch eine Datei an:

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

Und dann guckst du, was unter session steht. All diese Werte lassen sich ändern. Wenn du nicht weißt, was es heißt, dann kannst du mal googlen.


11.

aaaah also bernd ich hab deinen ratschlag mal beherzigt und error reporting verwendet und, siehe da:

Zitat:
Notice: Undefined variable: _SESSION in /usr/export/www/vhosts/funnetwork/hosting/thewuz/Shoutbox/admin.php on line 10
nur versteh ich jetzt nicht warum sie undefiniert sein soll, muss ich da was includen damit die NR auch für die nächste seite übernommen wird?


achso und line 10 is dashier:

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




12.

ne, aber Du mußt auf jeder Seite session_start() zu Beginn schreiben


13.

ja aber dann kann ja jeder rein weil die session dann schon beim reingehen gestartet wird oder?


der anfang meiner admin.php sieht immo so aus:

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

stimmt das so?


14.

Nein, es muss session_start() lauten.

Aber du solltest dich über Sessionhandling informieren, hat ja so überhaupt keinen Sinn, da du überhaupt nicht verstehst worum es da geht.


15.

ja denke das sollte ich


aber um das abzuschließen noch eine kleine frage:

wenn ein wildfremder ohne einloggen admin.php aufruft, dann erscheint meine fehlermeldung, seh ich das so richtig?


16.

Du solltest auch auf jeder Seite error_reporting(E_ALL); schreiben


17.

ja habe ich gemacht, aber keine weitern fehlermeldungen


jetzt habe ich mit das mit sessions gesichert und man kann trotzdem noch admin.php im browser aufrufen ohne das eine fehlermeldung kommt. Wo muss ich das denn überprüfen ob $_SESSION['user'] die richtige NR hat weil

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

funktioniert irgendwie nicht, aber warum?


18.

ist das soooo schwer? session_start(); muß an den ANFANG des Scripts...

nicht nach if oder sonstwas.


19.

ja, aber ich sagte doch schon das funktioniert nicht, weil dann jeder zugriff auf die datei hat..


EDIT: Glaube ich zumindest...


20.

So ein Quark - mit session_start wird die Session gestartet, das ist alles.

Es wird lediglich der Gebrauch der Session-Variablen ermöglicht.

Lies doch mal ein Tutorial zum Thema - da gibts doch gute.


21.

ja meine frage war auch anders gestellt:

Zitat:
Wo muss ich das denn überprüfen ob $_SESSION['user'] die richtige NR hat
und mit welchem befehl muss ich das machen?

Also nochmal zu meiner Problemdefinition: Man soll nur mit einer richtigen Passworteingabe weiterkommen, und admin.php und delete.php möchte ich mit sessions vor fremden eingriffen schützen


ich hoffe das war klar genug.. wenn nicht bitte sagen =)


22.

Zitat:
wuziaustria postete
ich hoffe das war klar genug..
Das war es von Anfang an. Aber anstatt du dich mal ernsthaft mit PHP und Sessions beschäftigst, wartest du anscheinend hier auf eine fertige Lösung. Lass dir gesagt sein: Bei so einer Einstellung wirst du wohl lange warten können.

*** Nobody ***


23.

ich warte lediglich auf Hilfe, die ich hier in anständiger Form wohl nicht bekommen werde

und nun lass DIR mal gesagt sein:

Ich habe mich bereits mit Sessions auseinander gesetzt und in dem Tutorial das ich gelesen habe dürfte das anscheinend schlecht/fehlerhaft erklärt worden sein. Ich habe es demnach auch nicht verstanden und deswegen frage ich hier nach bevor ich x Stunden im Internet damit verbringe ein neues Tutorial zu suchen und nochmal von vorne zu beginnen

aber anscheinend ist das nicht möglich


24.

daß session_start(); ganz am Anfang stehn muß steht in jedem Tutorial über Sessions.

Und zu Deiner Frage:

mit

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

kannst Du die Nummer vergleichen - wo der Inhalt von $nummer herkommen soll,
kannst nur Du wissen.


25.

also ich kann damit keine individuelle Abfragevariable prüfen?

Aha ok also das erklärt einiges! ich werd mir wohl wirklich ein neues Tutorial suchen müssen denn in meinem stand nichtmal das drinnen

ok danke für deine hilfe, frage hat sich erledigt :)


26.

Du mußt mit html anfangen und erst mal ein Formular erstellen.


27.

naja das hab ich ja bereit:

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




28.

Das ist kein vollständiges Formular... Du solltest bei SELFHTML nochmal nachlesen...


29.

ich weiss der submit fehlt, aber was sonst?


30.

Der submit-Button fehlt, ganz genau... Die leeren Attribute, also die mit ="" solltest du auch besser rauslassen...


31.

<form action="password.php" method="post">
Passwort für Admin Bereich: <input type="Password" name="password"> <br>
<input type="Submit" value="Einloggen!">
</form>


ok jetzt ist das formular komplett und weiter?


32.

ich bin ja nicht so, hier hast mal ein Grundgerüst:

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

ist nur mal schnell so zusammengebastelt ...


33.

Zitat:
wuziaustria postete
und weiter?
Gute Frage. Wie sieht denn deine password.php aktuell aus?

*** Nobody ***


34.

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

und jetzt habe ich ehrlich gesagt nach diesem dämpfer kein plan wie das weitergeht.. ?


35.

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

Welche Fehlermeldung bekommst du denn dadurch? Und was ist die Standardantwort, die hier immer gegeben wird?


36.

da bekomme ich keine fehlermeldung

kann mir jemand sagen wie ich meine dateien sichern kann mit welchem befehl, das wenn man kein passwort eingegeben hat eine von mir definierte fehlermeldung beim aufruf von admin.php kommt? damit wäre mir seehr geholfen :(


37.

Du bekommst keine Fehlermeldung? Das kann sich von uns eigentlich niemand vorstellen. Und dir ist schon geschrieben worden, dass du error_reporting(E_ALL); an den Anfang deiner Scripte schreiben sollst.

Du ignorierst Hinweise, lernst nicht die Grundlagen, daher nur:

http://www.php.net/manual/de
http://www.php-faq.de
http://www.schattenbaum.net/php/ (leider etwas veraltet)
http://www.galileocomputing.de/openbook/php4 (leider etwas veraltet)
http://tut.php-q.net/index.html
http://dev.mysql.com/doc/mysql/de/index.html
http://ffm.junetz.de/members/reeg/DSP/
http://www.phptutorials.de
http://www.dynamic-webpages.de/05.tutorials.php

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 4 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.

*** Nobody ***


38.

Zitat:
da bekomme ich keine fehlermeldung

Dann bekommst du sie, wenn du das richtige Passwort eingibst... Hast du dir schonmal die hunderttausend Login-Skripte, die es hier im Forum gibt, angeschaut??? Das ist das ganze Procedere schon mehrfach erläutert...


Hier gehts zum Orginal Eintrag "Session Neuling hat eine Frage :)" im Forum
 
phpforum.de | Impressum