Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 3753 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...