Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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, 3802 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
Windows Server
Login Script verzögert ausführen (6)

Frage von Intruder0001 zum Thema Windows Server ...

Windows Server
gelöst Login Script nach der Anmeldung Zeitverzögert ausführen (4)

Frage von Intruder0001 zum Thema Windows Server ...

Windows Server
gelöst Hilfe bei einfachem Powershell Copy-Script (8)

Frage von pcpanik zum Thema Windows Server ...

Windows Server
Login Script als Domänenadmin ausführen (27)

Frage von erikro zum Thema Windows Server ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(14)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Server
Bilder aus dem Web mit CSV runterladen (30)

Frage von Yannosch zum Thema Server ...

LAN, WAN, Wireless
Gebäudeverkabelung 10Gigabit LWL (27)

Frage von raffzwo zum Thema LAN, WAN, Wireless ...

Windows Update
Novemberpatches und Nadeldrucker bereiten Kopfschmerzen (14)

Tipp von MettGurke zum Thema Windows Update ...