Archiv verlassen und diese Seite im Standarddesign anzeigen : Login mit Hilfe von PHP und mySQL (konflikt mit anderem Script)
Mind_Power 04-09-2006, 15:18 Hallo,
erstemal danke für die guten Tipps und Tricks die Ihr hier freigebt!
Ich habe ein Login Bereich nach dem Tutorial von mrhappiness gemacht.
Funzt alles prima.
Nach dem Login includiere ich einen Bereich mit einem neuen Formular welches beim Absenden von PHP validiert wird (sollte).
Alleine stehend funzt beides prima. Aber in Kombi haut es mich beim Absenden immer wieder zurück zum Login Formular.
Hier ein paar Ausschnitte:
<?
session_start();
include 'libraries/sessionhelpers.inc.php';
if (isset($_POST['login']))
{
$userid=check_user($_POST['username'], $_POST['userpass']);
if ($userid!=false)
login($userid);
else
echo 'Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in())
echo '<div style="margin-left: 100px;">
<form method="post" action="gutschein_flug.php">
<label>Benutzer: </label><input name="username" type="text" id="userpass" class="eintipp" /><br />
<label>Passwort: </label><input name="userpass" type="password" id="userpass" class="eintipp" /><br /><br />
<img src="img/spacer.gif" alt="" width="85" height="1" /><input name="login" type="submit" id="login" value="Anmelden" />
</form></div>';
else
echo '<p style="text-align: right;"><a href="logout.htm"><b>Abmelden</b></a></p>';
if (logged_in())
include 'gutschein/gutschein_formular.php';
?>
--------------------------------------------------------------
In der Includierten steht im Formular:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
-------------------------------------------------------------
Könnte da das Problem liegen?
Bitte um Hilfe...
Danke im Voraus
if (isset($_POST['login'])) - wenn es in den gePOSTeten Daten keinen Eintrag unter dem Feldnamen login gibt, dann wird wieder deine Meldung ausgegeben.
Überlege dir also eine Möglichkeit, die beiden unterschiedlichen Formulare voneinander zu unterscheiden - beispielsweise über ein verstecktes Formularfeld, auf dessen Vorhandensein in den Daten du dann abprüfst.
Mind_Power 04-09-2006, 17:43 Danke für die schnelle Antwort.
D.H.:
in die zwei Formulare muss ich nun schonmal folgendes einbinden:
...
<input type="hidden" name="Formularnummer" value="A" />
<label>Benutzer: </label><input name="username" type="text" id="userpass" class="eintipp" /><br />
...
und in des zweite z.B.:
...
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="Formularnummer" value="B" />
...
----------------------------------------------------------
Hab das Problem schonmal begriffen, aber ganz ehrlich gesagt weiß ich nicht wie ich es umsetzen soll...
Hatte die Idee von einer If else Abfrage, aber irgendwie weiß ich nicht so recht wo ich die platzieren soll und wie ich den Bezug zu dem Feld "login" bringen soll.
Über einen kleinen Schubser in die richtige Richtigung wäre ich sehr dankbar... Bin kein PHP Profi, deswegen überseh ich wahrscheinlich grad den einfachen Weg ;)
Sorry, aber steh grad etwas aufem Schlauch ;)
den kleinen Schubser hast im Beitrag von Wahsaga schon erhalten.
Noch mehr zu sagen würde bedeuten Dir das Script umzuschreiben.
Mind_Power 04-09-2006, 18:10 Ist denn mein Gedankenansatz wenigstens richtig gewesen?
Oder hab ich's total falsch verstanden?
Dir fehlen die Grundlagen:
http://tut.php-q.net/formulare.html
Mind_Power 05-09-2006, 10:21 Wenn ich in dem Loginformular als methode "get" eingebe (nur um zu testen) passiert das gleiche wie vorher...
laut den Grundlagen sollten sich die zwei Formulare doch dann unterscheiden, oder nicht...
Original geschrieben von Mind_Power
Wenn ich in dem Loginformular als methode "get" eingebe (nur um zu testen) passiert das gleiche wie vorher...
Und die Abfrage im Script, die von per POST übermittelten Werten ausgeht, hast du dabei ebenfalls angepasst?
Mind_Power 05-09-2006, 10:46 Ja, klar...
sieht jetzt so aus:
----------------------------------------
<?
session_start();
include 'libraries/sessionhelpers.inc.php';
if (isset($_GET['login']))
{
$userid=check_user($_GET['username'], $_GET['userpass']);
if ($userid!=false)
login($userid);
else
echo 'Ihre Anmeldedaten waren nicht korrekt!';
}
if (!logged_in())
echo '<div style="margin-left: 100px;">
<form method="GET" action="gutschein_flug.php">
<label>Benutzer: </label><input name="username" type="text" id="userpass" class="eintipp" /><br />
<label>Passwort: </label><input name="userpass" type="password" id="userpass" class="eintipp" /><br /><br />
<img src="img/spacer.gif" alt="" width="85" height="1" /><input name="login" type="submit" id="login" value="Anmelden" />
</form></div>';
else
echo '<p style="text-align: right;"><a href="logout.htm"><b>Abmelden</b></a></p>';
if (logged_in())
include 'gutschein/gutschein_formular.php';
?>
Schau dir über print_r($_GET) an, welche Daten dein Script bekommt - und schau dann, ob der Scriptablauf dem entspricht.
Mind_Power 05-09-2006, 11:10 Array ( [username] => xxxxx [userpass] => xxxxxx [login] => Anmelden )
Also für mich sieht alles okay aus...
ich glaub ich geb bald auf...
Hab mir jetzt schon total den Kopf zermantscht, aber ich seh keine Logik...
Und der Aufruf von check_user() liefert was zurück?
Debugausgaben innerhalb dieser Funktion brachten welche Erkenntnis?
Mind_Power 05-09-2006, 11:49 Aufruf von check_user()??? Wie meinst Du das? Hab's doch übernommen...
Debugausgaben??? Keine Ahnung wie ich die Anzeigen lassen soll.
Okay - bin wohl an meine Grenzen angelangt!
Vielen dank für Eure Mühe
Schade, dass es nix gebracht hat...
Bin wohl doch zu blöd ;)
Ciao
Mind_Power 05-09-2006, 12:00 Wollte ne PM schicken, geht net...
Was willsten für's anpassen haben?
Ich brauch das Script funktionstüchtig und weiß echt net mehr was ich noch machen soll ...
mrhappiness 05-09-2006, 12:08 Schreib direkt nach session_start(); malecho session_name().' = '.session_id().'<br />';
Schreib vor die Zeile mit check_user malecho 'Prüfen der Logindaten';Kommt diese Zeile beim Abschicken des Loginformulars?
Kommt diese Zeile beim Abschicken des zweiten Formulars?
Poste bitte mal die komplette Ausgabe dieser zwei Zeilen bei:
- 1. Aufruf der Seite (alle browserfenster vorher schließen)
- Nach Abschicken des Loginformulars
- Nach Abschicken des zweiten Formulars
Mind_Power 05-09-2006, 12:20 1. Aufruf:
PHPSESSID = 4d97cb99bbba7ea0bffff399815532b5
Abschicken Login:
PHPSESSID = fdefc51d254906c68f7110b03f71ed73
Prüfen der Logindaten
Abschicken 2. Form:
PHPSESSID = 2954d7d6d2d1f87c0af50644641999c7
Sollte diese ID nicht immer die gleiche sein?
Oder hab ich das beim Tut falsch verstanden?
mrhappiness 05-09-2006, 12:23 Die sollte immer gleich sein.phpinfo();und bitte alles posten, was mit session anfängt (gibt einen entsprechenden Abschnitt)
Akzeptiert dein Browser Cookies?
Mind_Power 05-09-2006, 12:30 Browser akzeptiert Cookies. Das komische war, den ersten Tag als ich es programmiert bzw. von deinem Tut umgesetzt habe hatte es funktioniert. Dann am nächsten Tag gings gar nicht mehr. Ich denke es war irgendwie im Cache gespeichert oder so...
Hier die PHP Info von Session bis Shmop
session
Session Support enabled
Registered save handlers files user
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /tmp /tmp
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid Off Off
Mind_Power 05-09-2006, 13:57 ICH HAB'S HINBEKOMMEN!!!
War ein Fehler in dem zweiten Formular bei der Validierung...
Aber ich glaube die Session-Ids werden trotzdem immer neu genereiert, aber auch jedesmal neu abgefragt, weswegen es dort zu keiner Kollision kommt...
Danke, danke, danke für eure Mühe...
werd's weiterempfehlen und wenn ich mal was kann ;) post ich's...
@ mrhappiness: schau aber bitte trotzdem nochmal über die PHP Einstellungen drüber wegen den Sessions...
weiß da net so bescheid, danke...
Mind_Power 05-09-2006, 14:12 Probiere gerade noch ein wenig rum...
mit der Post methode im login formular funzt es nicht...
...ist aber halb so wild da es eh ein allgemeines passwort ist...
wäre trotzdem schöner es anders zu regeln ;)
|