Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Einfaches Login Script klappt Denkfehler?

Frage Entwicklung PHP

Mitglied: L0g1t3ch

L0g1t3ch (Level 1) - Jetzt verbinden

05.06.2012, aktualisiert 23:38 Uhr, 3814 Aufrufe, 6 Kommentare

Hallo Liebe Profis

Ich habe wiedereinmal ein PHP Problem :D

und zwar möchte ich ein einfaches Login script schreiben Sicherheit ist hier irrelevant da es nur Netzintern betrieben wird.

Benutzer sollen sich anmelden mit Benuztername und Password und dann soll mittels einer "While / if" Bedingung das ganze geprüft werden.

Das Formular:

01.
<form action="login.php" method="post"> 
02.
<table> 
03.
	<tr> 
04.
    	<td width="150">Benutzername</td> 
05.
		<td><input type="text" name="username" /></td> 
06.
     </tr> 
07.
     <tr> 
08.
     	<td>Passwort</td> 
09.
        <td><input type="text" name="password" /></td> 
10.
     </tr> 
11.
     <tr> 
12.
     	<td colspan="2" align="center"><input type="submit" value="Login" /></td> 
13.
     </tr> 
14.
</table> 
15.
</form>
Das Login Script:

01.
<?php 
02.
	$username = $_POST['username']; 
03.
	$password = $_POST['password']; 
04.
	 
05.
	include("inc/connect.php"); 
06.
	 
07.
	$SQL = "SELECT * FROM users"; 
08.
	$result = mysql_query($SQL); 
09.
	while($row = mysql_fetch_array($result)) 
10.
11.
		if(($username == $row['username']) && ($password == $row['password'])) 
12.
13.
				echo "Herzlich Willkommen"; 
14.
15.
			 
16.
17.
		 
18.
		 
19.
	?>
Folgendes Passiert: Password und Benutzername werden überprüft und sofern richtig auf "Herzlich Willkommen" verwiesen, soweit so gut!

Hänge ich an das IF aber noch eine "ELSE" dran wird selbst bei richtigen Zugangsdaten die ELSE schleifen ausgeführt!

Was mache ich also Falsch?! :D

Lieben Gruß
Benjamin
Mitglied: Epixc0re
05.06.2012 um 14:00 Uhr
Zitat von L0g1t3ch:

if(($username == $row['username']) && ($password == $row['password']))
{
echo "Herzlich Willkommen";
}

}


Der Fehler den du beobachtest ist ganz logisch, da du sicher mehr als einen User hast.
In deiner Schleife wird jeder User abgearbeitet der in der DB steht, wenn das Passwort und der Username matcht dann führt er dein "Herzlich Willkommen" aus, und beim nächsten User kommt dann alles in else {} dran.

Du solltest ggf. return verwenden, oder alles auf Mysql abschieben:
01.
select * from users where username='$username' and password='$password';

lg aus Wien,
Stefan
Bitte warten ..
Mitglied: ITSchlumpf
05.06.2012, aktualisiert um 14:09 Uhr
Hoi,

müsstest du eig nicht $result anstatt $row benutzen, da du dein Ergebnis überprüfen willst?


01.
 <?php 
02.
        include('../server/server.php'); 
03.
        $dbconnect = mssql_connect($SQL_Server, $SQL_User, $SQL_Pw); 
04.
        mssql_select_db($SQL_db); 
05.
        session_start(); 
06.
        $_SESSION["benutzername"] = $_POST["username"]; 
07.
        $_SESSION["passwort"] = $_POST["pw"]; 
08.
        $index_user = $_SESSION["benutzername"]; 
09.
        $pw = $_SESSION["passwort"]; 
10.
        $index_pw=md5($pw); 
11.
        $query = mssql_query( 
12.
                "Select Benutzername, Passwort From Benutzer Where 
13.
                Benutzername = '$index_user' AND Passwort = '$index_pw' AND flag='i.O'"); 
14.
        $result = mssql_fetch_array($query, MSSQL_ASSOC); 
15.
 
16.
        if (($index_user = "$result[Benutzername]") AND 
17.
                ($index_pw = "$result[Passwort]")) { 
18.
 
19.
            mssql_close($dbconnect); 
20.
            header("Location: liste.php?sort=IP&dir=asc"); 
21.
        } else { 
22.
            header("Location: ../error/error.php?login=error&eeepc=&anlegen="); 
23.
 
24.
            mssql_close($dbconnect); 
25.
26.
        ?>
Das hab ich mal vor einiger Zeit selbst geschrieben für ne kleine interne Anwendung bei uns. Vll hilft es dir ja weiter.

Gruß
Schlumpf

Edit: Okay sry verlesen $row passt ^^
Bitte warten ..
Mitglied: Epixc0re
05.06.2012 um 14:27 Uhr
Zitat von ITSchlumpf:

müsstest du eig nicht $result anstatt $row benutzen, da du dein Ergebnis überprüfen willst?

Nein Row ist schon korrekt da er ja
01.
$result = mysql_query($SQL);  
02.
while($row = mysql_fetch_array($result)) 
verwendet, $row ist eine ableitung von $result, welche nur die aktuelle Zeile enthält.
Bitte warten ..
Mitglied: Epixc0re
05.06.2012, aktualisiert um 14:31 Uhr
Und hier ist die Lösung der Frage:

01.
<?php 
02.
	$found = 0; 
03.
 
04.
	$username = $_POST["username"]; 
05.
	$password = $_POST["password"]; 
06.
 
07.
	include("inc/connect.php"); 
08.
	$SQL="SELECT * FROM users"; 
09.
 
10.
	$result = mysql_query($SQL); 
11.
	while($row = mysql_fetch_array($result)) 
12.
13.
		if($username == $row["username"] && $password == $row["password"]) 
14.
			$found = 1; 
15.
16.
 
17.
	if($found == "1") 
18.
19.
		echo "Herzlich Willkommen!"; 
20.
	} else { 
21.
		echo "Weg da!"; 
22.
23.
?>
Bitte warten ..
Mitglied: ITSchlumpf
05.06.2012 um 14:38 Uhr
Hi Epix,

habs oben schon editiert. Habs beim zweiten mal lesen dann gesehen, dass es passt.

Gruß
Bitte warten ..
Mitglied: L0g1t3ch
05.06.2012 um 14:57 Uhr
ich danke dir vielmals du hast mich auf den richtigen weg geschubst :D
Bitte warten ..
Ähnliche Inhalte
Server
Einfache .htaccess-Weiterleitung klappt nicht
gelöst Frage von itebobServer4 Kommentare

Moin, ich möchte, dass beim Abrufen der Adresse diese Seite geladen wird. Ich habe etliche Variationen erfolglos getestet. Hier ...

PHP
MYSQL und PHP Login Script
gelöst Frage von GoldencreeperPHP17 Kommentare

Hallo liebe Administrator Community. Ich habe Arbeite grade an einer Status Seite für einen Hoster. Die Seite ist auch ...

Windows Server
Login Script verzögert ausführen
Frage von Intruder0001Windows Server6 Kommentare

Hallo gibt es die Möglichkeit das login Script verzögert nach der Anmeldung ca. 10-20sek auszuführen ?? Gerade bei schnellen ...

Windows Server
Pdf per login script
gelöst Frage von ToggleWindows Server4 Kommentare

Hallo zusammen, ich habe hier intern eine Fragestellung bekommen. Wir haben hier im 3 Stunden-Takt Personen, die sich an ...

Neue Wissensbeiträge
Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 4 StundenMac OS X1 Kommentar

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 11 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 13 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 16 StundenMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1017 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...