Ein Berg Fehlermeldungen

du hast das else vergessen -.-

Wieso? Es gibt doch auch ganz einfache if-Anweisungen …
//Edit: Lol, ok, ich seh gerade, dass ich irgendwelchen Mist geschrieben hab :p

if heißt: FALLS
else: Sonst
Also Falls die Variable nicht gesetzt ist soll er das Form zeigen.
Sonst prüft er ob das PW richtig oder Falsch ist.
Zur Zeit ist es bei dir So:
Falls Variable nicht da Form.
Ist das Passwort richtig? Hey das ist falsch also Fehlermeldung.

Soll ja aber so:
Falls Variable nicht da Form
Ansonsten ist das PW richtig? Ja ist es oder nein ist es nicht.

Ja, aber die Sache mit dem richtigen oder falschen Passwort soll er doch einfach
nur ignorieren, wenn keine Post-Variablen vorliegen.
Ich merk gerade, dass ich den falschen Code gepostet habe. Hier der Code:

[code]<?php
include(“config.php”);
$PW = $_POST[‘PW’];
if (!isset($_POST[‘PW’])) {
echo ’

Passwort: '; } if (isset($_POST['PW'])) { if ($PW == $adminpw) { define('SICHERHEIT', true); include('admin_user.php'); } if ($PW != $adminpw) { die('Zugriff verweigert!'); } } ?>[/code]

Jetzt versteh ich auch michis Post :wink:

<?php include("config.php"); $PW = $_POST['PW']; if (!isset($_POST['PW'])) { echo ' <form method="POST"> Passwort:<input type="text" size="20" name="PW"> </form>'; } elseif (isset($_POST['PW'])) { if ($PW == $adminpw) { define('SICHERHEIT', true); include('admin_user.php'); } elseif ($PW != $adminpw) { die('Zugriff verweigert!'); } } ?>

Machs entweder so oder

<?php include("config.php"); $PW = $_POST['PW']; if (!isset($_POST['PW'])) { echo ' <form method="POST"> Passwort:<input type="text" size="20" name="PW"> </form>'; } else { if ($PW == $adminpw) { define('SICHERHEIT', true); include('admin_user.php'); } else { die('Zugriff verweigert!'); } } ?>
Das 2. wär richtiges PHP. aber nur mit ifs arbeitet man nichtmal in c++^^

Mhm, das funktioniert - aber wieso hat meins nicht funkioniert?
Rein logisch hätte es doch klappen müssen, oder?
Danke, jedenfalls :wink:

Warum es nicht funzt weiß ich nicht genau.
Aber einen vorteil hat if else und elseif:
Es spart Zeit beim generieren.
Weil sobald PHP eine übereinstimmung beim if findet macht er das else nichtmehr und ignoriert es.
Bei dir schaut er bei jedem if nach ob es eine übereinstimmung findet.
Sobald man sehr viele hat würde es ziemlich lange dauern alles ifs zu überprüfen

Hi

Ich bin mittlerweile fast fertig mit dem Script. Einzig und allein ein Problem
habe ich noch:

[code]<?php
include(“config.php”);
session_start();
$Benutzername = $_POST[‘Benutzername’];
$Passwort = $_POST[‘Passwort’];
if (!isset($_POST[‘Benutzername’]) or !isset($_POST[‘Passwort’])) {
if (!isset($_SESSION[‘login’])) {
echo ’

Benutzername:

Passwort:

'; } elseif (isset($_SESSION['login'])) { echo 'Hier kann Inhalt rein, der erscheint, wenn der Benutzer eingeloggt ist'; } } elseif (isset($_POST['Benutzername']) && isset($_POST['Passwort'])) { //Verbindung aufbauen $db = mysql_connect($host, $dbuser, $dbpass); mysql_select_db("$dbname",$db); //Das Passwort zum User auslesen $sql = "SELECT Passwort FROM User WHERE Benutzername LIKE '$Benutzername'"; $result = mysql_query($sql,$db); if ($result == $Passwort) { $_SESSION['login'] = 1; echo "Du wurdest erfolgreich eingeloggt!"; } else if ($result != $Passwort) { echo "Es wurden falsche Daten eingegeben!"; } } ?>[/code] Das ist mein Login. Das mit den Sessions und dem nach dem Login verschwinden Formular klappt alles wunderbar. Bloß die Passwort-Prüfung mit der MySQL-Verbindung klappt noch nicht ganz. Egal was ich eingebe, das Passwort scheint immer falsch zu sein. Irgendwo da drin steckt ein Fehler ... aber ich bekomme keine Fehlermeldung. Nicht mal mit error_reporting auf all. Mein phpmyadmin spinnt auch gerade, aber das scheint im Moment bei vielen aufzutreten. Werden dadurch vielleicht die MySQL-Anfragen behindert?

Gruß,
TrekWork

//Verbindung aufbauen $db = mysql_connect($host, $dbuser, $dbpass); mysql_select_db("$dbname",$db); //Das Passwort zum User auslesen $sql = "SELECT Passwort FROM User WHERE Benutzername LIKE '$Benutzername'"; $query = mysql_query($sql); $result = mysql_fetch_row($query); if ($result[0] == $Passwort) {

Ersetz mal :wink:

Uhm, da stimmt wohl was nicht.
Aber mir fällt auch gerade ein, dass das Ergebnis ein Array ist :smiley:

//Verbindung aufbauen $db = mysql_connect($host, $dbuser, $dbpass); mysql_select_db($dbname,$db); //Das Passwort zum User auslesen $sql = "SELECT 1 FROM User WHERE Benutzername = '$Benutzername' AND Passwort = '$Passwort';"; $query = mysql_query($sql); if (mysql_num_rows($query)) {

:astonished:
Ist doch aber das selbe wie meins nur in blau, oder?

Öhm - dann versuch mal das://Verbindung aufbauen $db = mysql_connect($host, $dbuser, $dbpass); mysql_select_db($dbname,$db); //Das Passwort zum User auslesen $sql = "SELECT 1 FROM User WHERE Benutzername = '$Benutzername' AND Passwort = '$Passwort';"; $query = mysql_query($sql) or die(mysql_error()); if (mysql_num_rows($query)) {

Sieht mir nach einem MySQL-Fehler aus. Ich weiß auch was falsch ist.
Die Spalte heißt Username. Aber wenigstens funktioniert jetzt der
technische Teil. Danke Scram :wink:
Was war nun der Unterschied zu meinem Script, bzw. was war an meinem
Script falsch (bis auf die Sache mit dem Array)? Mir geht’s ja nicht nur
darum, dass mein Script funktioniert, sondern auch darum, dass ich php
lerne.

$sql = "SELECT Passwort FROM User WHERE Benutzername LIKE '$Benutzername'"; $result = mysql_query($sql,$db); if ($result == $Passwort) {
Die Fehler stecken in den 3 Zeilen. Erstmal benutzt du LIKE - das heißt, wenn z. B. „*“ als Username übergeben wird, ist absolut jeder Username gültig. Zweitens: mysql_query() gibt eine result resource zurück und kein Ergebnis aus der Abfrage. Also wird eine Resource mit einem String verglichen, und das ist immer false. :wink: