Ich habe ein Problem mit einem selber geschriebenen Memberscript.
Erstmal muss ich erwähnen, dass es noch ganz am Anfang ist nur nur mal so als Test ist (es wird später noch richtig ausgebaut und optimiert).
Der Code ist bisher auch noch nicht sehr übersichtlich, aber das sollte man verstehen können.
Das ganze hier soll sozusagen ein Adminbereich sein. Zusätzlich kann man sich noch anmelden, einloggen und Einstellungen vornehmen.
Später wird das Anmelden, Einloggen und Einstellen voneinander getrennt, bisher ist alles noch in einer Datei.
Hier mal das gesamte Script:
<? include 'functions.php'; db_connect(); $action = $_GET['action']; $user = ""; $pass = ""; if(!isset($action)) { $action = "pruefenobadmin"; } if($action == "pruefenobadmin") { if(isset($_COOKIE['user_id']) and isset($_COOKIE['user_pw'])) { $action = "einstellen"; } else { $action = "login"; } } if($action == "login" and empty($_COOKIE['user_id']) and empty($_COOKIE['user_pw'])) { ?> Bitte loggen Sie sich für den Administrationsbereich ein:<br><br> <form action="?action=loginpruefen" method="post"> Benutzername:<br> <input type="text" name="benutzername"> <br><br> Passwort:<br> <input type="password" name="passwort"> <br><br> <input type="submit" value="Login"> </form> <br><br> Sollten Sie noch nicht registriert sein, können Sie sich <a href="?action=registrieren">hier</a> anmelden! <? } if($action == "login" and isset($_COOKIE['user_id']) and isset($_COOKIE['user_pw'])) { echo '<b>Fehler!</b><br>Sie sind bereits eingeloggt und können sich nicht noch einmal einloggen.<br><br> <a href="?action=einstellen">Weiter zur Administration</a>'; } if(isset($benutzername) and !empty($benutzername)) { $user = mysql_real_escape_string($_POST['benutzername']); } if(isset($passwort) and !empty($passwort)) { $pass = mysql_real_escape_string($_POST['passwort']); } $result = mysql_query("SELECT id FROM mitglieder WHERE benutzername = '".addslashes($user)."' AND passwort = '".addslashes($pass)."'"); $mitglied = mysql_fetch_array($result); if($action == "loginpruefen") { if($user == "" or $pass == "") { echo '<b>Fehler!</b><br>Ihre Eingabe war leider nicht vollständig.<br><br> <a href="?action=login">Zurück zum Login</a>'; } if (mysql_num_rows($result) == 0 and !empty($user) and !empty($pass)) { echo '<b>Fehler!</b><br>Ihre Eingabe war leider nicht richtig.<br><br> <a href="?action=login">Zurück zum Login</a>'; } if(mysql_num_rows($result) == 1) { setcookie("user_id", $mitglied['id'], time() + 3600); setcookie("user_pw", $pass, time() + 3600); echo 'Erfolgreich eingeloggt!<br><br> <a href="?action=einstellen">Weiter zur Administration</a>'; } } if($action == "einstellen" and isset($_COOKIE['user_id']) and isset($_COOKIE['user_pw'])) { $dbsettings = mysql_query("SELECT * FROM einstellungen"); $set = mysql_fetch_array($dbsettings); ?> <span style="font-size:x-large; font-weight:bold;">Einstellungen</span><br><br> <b>Wichtig:</b> Diese Einstellungen werden auf der gesamten Seite wirksam<br> Bitte keine Felder leer lassen, sonst werden die Standard-HTML-Werte benutzt <br><br> <form action="?action=speichern" method="post"> Seitenname:<br> <input type="text" size="20" name="seitenname" value="<? echo $set[seitenname]; ?>"><br><br> Schriftart:<br> <select name="schriftart"> <option selected><? echo $set[schriftart]; ?></option> <option>Verdana</option> <option>Arial</option> <option>Courier New</option> <option>Times New Roman</option> <option>Tahoma</option> <option>Comic Sans MS</option> <option>MS Sans Serif</option> <option>Lucida Sans</option> </select><br><br> Schriftgrad:<br> <input type="text" size="20" name="schriftgrad" value="<? echo $set[schriftgrad]; ?>"><br><br> Schriftfarbe:<br> <input type="text" size="20" name="schriftfarbe" value="<? echo $set[schriftfarbe]; ?>"><br><br> Linkfarbe:<br> <input type="text" size="20" name="linkfarbe" value="<? echo $set[linkfarbe]; ?>"><br><br> Linkfarbe Mouseover:<br> <input type="text" size="20" name="linkfarbe_hover" value="<? echo $set[linkfarbe_hover]; ?>"><br><br> Hintergundfarbe:<br> <input type="text" size="20" name="hintergrundfarbe" value="<? echo $set[hintergrundfarbe]; ?>"><br><br> <input type="submit" value="Speichern"> </form> <br> <center><a href="?action=logout">Logout</a></center> <? } if($action == "einstellen" and empty($_COOKIE['user_id']) and empty($_COOKIE['user_pw'])) { echo '<b>Fehler!</b><br>Sie sind nicht eingeloggt.<br><br> <a href="?action=login">Zum Login</a>'; } if($action == "speichern" and isset($_COOKIE['user_id']) and isset($_COOKIE['user_pw'])) { $seitenname = mysql_real_escape_string($_POST['seitenname']); $schriftart = mysql_real_escape_string($_POST['schriftart']); $schriftgrad = mysql_real_escape_string($_POST['schriftgrad']); $schriftfarbe = mysql_real_escape_string($_POST['schriftfarbe']); $linkfarbe = mysql_real_escape_string($_POST['linkfarbe']); $linkfarbe_hover = mysql_real_escape_string($_POST['linkfarbe_hover']); $hintergrundfarbe = mysql_real_escape_string($_POST['hintergrundfarbe']); $speichern = mysql_query("UPDATE einstellungen SET seitenname = '$seitenname', schriftart = '$schriftart', schriftgrad = '$schriftgrad', schriftfarbe = '$schriftfarbe', linkfarbe = '$linkfarbe', linkfarbe_hover = '$linkfarbe_hover', hintergrundfarbe = '$hintergrundfarbe'"); if($speichern == true) { echo 'Die Einstellungen wurden erfolgreich gespeichert!<br><br> <a href="?action=einstellen">Zurück zu den Einstellungen</a>'; } if($speichern == false) { echo 'Es ist ein <b>Fehler</b> aufgetreten!<br><br> <a href="?action=einstellen">Zurück zu den Einstellungen</a>'; } } if($action == "logout") { setcookie ("user_id", "", time() - 3600); setcookie ("user_pw", "", time() - 3600); echo 'Erfolgreich ausgeloggt!<br><br> <a href="?action=login">Zum Login</a>'; } if($action == "registrieren") { ?> <form action="?action=registrierung" method="post" enctype="multipart/form-data"> <table align="center"> <tr> <td align="center" colspan="2"> Bitte füllen Sie mindestens alle Pflichtfelder (*) aus <br><br> </td> </tr> <tr> <td align="right">* Benutzername:</td> <td align="left"><input type="text" size="20" maxlength="20" name="benutzername"></td> </tr> <tr> <td align="right">* Passwort:</td> <td align="left"><input type="password" size="20" maxlength="20" name="passwort"></td> </tr> <tr> <td align="right">* Vorname:</td> <td align="left"><input type="text" size="20" maxlength="20" name="vorname"></td> </tr> <tr> <td align="right">Nachname:</td> <td align="left"><input type="text" size="20" maxlength="20" name="nachname"></td> </tr> <tr> <td align="right">* E-Mail:</td> <td align="left"><input type="text" size="20" maxlength="50" name="email"></td> </tr> <tr> <td align="right">E-Mail-Adresse anzeigen:</td> <td><input type="checkbox" name="email_anzeigen" value="1" checked></td> </tr> <tr> <td align="center" colspan="2"><br> <input type="submit" value="Abschicken"> <input type="reset" value="Zurücksetzen"> <br><br> <? back(""); ?> </td> </tr> </table> </form> <? } if($action == "registrierung") { $benutzername = mysql_real_escape_string($_POST['benutzername']); $benutzername = htmlentities($benutzername); $passwort = mysql_real_escape_string($_POST['passwort']); $passwort = htmlentities($passwort); $vorname = mysql_real_escape_string($_POST['vorname']); $vorname = htmlentities($vorname); $nachname = mysql_real_escape_string($_POST['nachname']); $nachname = htmlentities($nachname); $email = mysql_real_escape_string($_POST['email']); $email = htmlentities($email); $email_anzeigen = mysql_real_escape_string($_POST['email_anzeigen']); $datum = date("d.m.Y"); $uhrzeit = date("H:i"); $ip = getenv("REMOTE_ADDR"); $anmelden = mysql_query("INSERT INTO mitglieder ( benutzername, vorname, nachname, passwort, email, email_anzeigen, registrierungsdatum, registrierungsip) VALUES ('$benutzername', '$vorname', '$nachname', '$passwort', '$email', '$email_anzeigen', '$datum', '$ip')"); if($anmelden == true) { echo 'Sie haben sich erfolgreich registriert!<br> Sie können sich nun mit Ihrem Benutzernamen und Ihrem Passwort einloggen.<br><br> <a href="?action=login">Zum Login</a>'; } if($anmelden == false) { echo 'Es ist ein <b>Fehler</b> aufgetreten!<br><br>'; back("zur Registrierung"); } } ?>
Das Ganze arbeitet mit einer MySQL Datenbank zusammen. Ich denke der Aufbau davon ist nicht entscheidend.
Bei diesem Script funktioniert eigentlich alles. Man kann sich Anmelden (wird in der DB gespeichert) und es erscheinen keine Fehlermeldungen.
Jetzt mein Problem:
Offline auf meinem Apache Xampp funktioniert alles einwandfrei und reibungslos. Habe es schon mehrfach getestet.
Nur online gibt es Probleme:
Und zwar kann man sich nicht einloggen.
Obwohl ein Benutzer in der DB richtig angelegt ist, kommt IMMER die Fehlermeldung von dieser Abfrage:
if($user == "" or $pass == "") { echo '<b>Fehler!</b><br>Ihre Eingabe war leider nicht vollständig.<br><br> <a href="?action=login">Zurück zum Login</a>'; }
Allerdings dürfte diese ja nur auftauchen, wenn ich nichts in das Login-Formular eingegeben habe.
Egal was ich eingebe, ob es Quark ist oder ob es richtig ist, es kommt immer dieser Fehler.
Wenn ich diese Abfrage raus mache, dann kommt gar nichts.
Also irgendwo muss ich einen Fehler haben, ich finde ihn aber nicht.
An was könnte es denn liegen?
Danke schon mal im Voraus für die Hilfe.
Falls ihr alle Dateien und die SQL-Informationen benötigt, dann schreibt es bitte.
Grüße!