kostenloser Webspace werbefrei: lima-city


Wieso funktioniert das Login Skript nicht richtig?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    pcundsoftware

    Kostenloser Webspace von pcundsoftware, auf Homepage erstellen warten

    pcundsoftware hat kostenlosen Webspace.

    Hallo,

    Bin PHP-Neuling
    wieso funktioniert das nicht. Er sagt immer wieder: bitte gib einen Benutzernamen ein.
    Hier der PHP - Code:
    <?php
    include('connect_db.php');
    ?>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
    <meta content="de" http-equiv="Content-Language" />
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>PCundSoftware.de Online - Login</title>
    <link href="login.css" rel="stylesheet" type="text/css" />
    <link href="fonts.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
    .style1 {
    	text-align: center;
    	font-size: small;
    }
    .style2 {
    	font-size: x-large;
    }
    </style>
    </head>
    
    <body>
    	<div id="complete">
    	<div id="logo">
    			</div>
    		<div id="heading">
    			<div id="bogen">	
    			</div>
    		</div>
    	<?php 	if(isset($_POST['senden']))
    		{
    ?>
    
    			<div id="login" class="style1">
    				<br/><br/><br/><br/>
    				Mit einer einzigen Anmeldung erhalten Sie Zugriff auf viele 
    				Dienste von <br />
    				<strong>PCundSoftware.de OnLine</strong><br />
    				<br />
    				<span class="style2">Anmeldung<br />
    				</span>bei PCundSoftware.de OnLine<br />
    				<br />
    				<table style="width: 100%">
    					<tr>
    						<td style="height: 24px">Benutzername:</td>
    						<td style="height: 24px">
    						<form method="post" action="index.php">
    							<input name="benutzername_pcsonline" type="text" /></form>
    						</td>
    					</tr>
    					<tr>
    						<td style="height: 4px">Passwort:</td>
    						<td style="height: 4px">
    						<form method="post" action="index.php">
    							<input name="password_pcsonline" type="password" /></form>
    						</td>
    					</tr>
    				</table>
    				<form method="post" action="index.php">
    					<input name="senden" type="submit" value="Abschicken"/>
    					</form>
    				&gt;&gt; Neu Registrieren</div>
    		
    		<div id="footer">
    		Footer
    		</div>
    	</div>
    	
    	<?php
    	$username = $_POST['benutzername_pcsonline'];
    	$password = md5($_POST['password_pcsonline']);
    	
    	
    
    			if(empty($_POST['$username']))
    				{echo 'Bitte geben Sie einen Benutzernamen ein<br/>';
    				}
    			if(empty($_POST['$password']))
    				{echo 'Bitte geben Sie ein Passwort ein';
    				}
    			else{
    				$query = @mysql_query("SELECT user, pass FROM users WHERE user == '$username'");
    				$result = @mysql_fetch_array($query);
    					if($_POST['$username'] == $result['user'] && $_POST['$password'] == $result['pass'])
    					{
    					echo 'Login erfolgreich!';
    					}
    				}
    			
    			}
    	?>
    	
    </body>
    
    </html>


    schöne grüße

    pcs
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Alle Daten die du per POST-Methode übergibst müssen innerhalb des Formular-Tags sein.
    Das ist bei dir nicht der Fall, soweit ich das jetzt sehe.
  4. Ich formuliere das, was Karpfen gesagt hat mal etwas deutlicher.

    Also du hast 3 Formulare. 2 enthalten einen String, und eins hat einen Button. Klickt der User auf den Button, so wird das 3. Formular abgeschickt. Die anderen beiden nicht. Es wird also keiner der beiden Strings übergeben. Weder Username noch Passwort. Du musst die 3 Input-Felder (Username, Passwort und Button) in ein Formular packen, dann funktioniert es auch. Dann hast du noch den Fehler, dass die Tabelle auserhalb der Fomulare beginnt, und in ihnen endet. Das darf nicht sein. Lieber alles in das Formular rein. So könnte dein Code aussehen:

    <?php
    include('connect_db.php');
    ?>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
    <meta content="de" http-equiv="Content-Language" />
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>PCundSoftware.de Online - Login</title>
    <link href="login.css" rel="stylesheet" type="text/css" />
    <link href="fonts.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
    .style1 {
    	text-align: center;
    	font-size: small;
    }
    .style2 {
    	font-size: x-large;
    }
    </style>
    </head>
    
    <body>
    	<div id="complete">
    	<div id="logo">
    			</div>
    		<div id="heading">
    			<div id="bogen">	
    			</div>
    		</div>
    	<?php 	if(isset($_POST['senden']))
    		{
    ?>
    
    			<div id="login" class="style1">
    				<br/><br/><br/><br/>
    				Mit einer einzigen Anmeldung erhalten Sie Zugriff auf viele 
    				Dienste von <br />
    				<strong>PCundSoftware.de OnLine</strong><br />
    				<br />
    				<span class="style2">Anmeldung<br />
    				</span>bei PCundSoftware.de OnLine<br />
    				<br />
    				<form method="post" action="index.php">
    				<table style="width: 100%">
    					<tr>
    						<td style="height: 24px">Benutzername:</td>
    						<td style="height: 24px">
    						<input name="benutzername_pcsonline" type="text" />
    						</td>
    					</tr>
    					<tr>
    						<td style="height: 4px">Passwort:</td>
    						<td style="height: 4px">
    							<input name="password_pcsonline" type="password" />
    						</td>
    					</tr>
    				</table>
    					<input name="senden" type="submit" value="Abschicken"/>
    					</form>
    				&gt;&gt; Neu Registrieren</div>
    		
    		<div id="footer">
    		Footer
    		</div>
    	</div>
    	
    	<?php
    	$username = $_POST['benutzername_pcsonline'];
    	$password = md5($_POST['password_pcsonline']);
    	
    	
    
    			if(empty($_POST['$username']))
    				{echo 'Bitte geben Sie einen Benutzernamen ein<br/>';
    				}
    			if(empty($_POST['$password']))
    				{echo 'Bitte geben Sie ein Passwort ein';
    				}
    			else{
    				$query = @mysql_query("SELECT user, pass FROM users WHERE user == '$username'");
    				$result = @mysql_fetch_array($query);
    					if($_POST['$username'] == $result['user'] && $_POST['$password'] == $result['pass'])
    					{
    					echo 'Login erfolgreich!';
    					}
    				}
    			
    			}
    	?>
    	
    </body>
    
    </html>

    So funktioniert das, jedoch würde ich dir empfehlen, den Button auch noch ein eine Tabellenspalte zu packen. Da ich nicht weis, ob du das willst, habe ich es mal gelassen. Das zu ändern sollte aber nicht schwer sein.
  5. Autor dieses Themas

    pcundsoftware

    Kostenloser Webspace von pcundsoftware, auf Homepage erstellen warten

    pcundsoftware hat kostenlosen Webspace.

    das Problem bei diesem Code ist aber jetzt, dass bitte geben sie einen Benutzernamen/ Passwort ein, gleich angezeigt wird, bevor manüberhaupt abgeschickt hat

    Beitrag zuletzt geändert: 8.1.2010 19:31:56 von pcundsoftware
  6. Hallo!
    Wenn du den Code von drafed-map übernommen hast, ist dein "Fehler" offensichtlich:
    $username = $_POST['benutzername_pcsonline'];
    $password = md5($_POST['password_pcsonline']);
    [...]
    if(empty($_POST['$username']))

    Hier wird abgefragt, ob das Array-Element $username (der gesendete Benutzername) überhaupt gesendet wurde - nicht aber ob das Array-Element username gesendet wurde.
    Die Lösung ist viel einfacher:
    if(empty($_POST["benutzername_pcsonline"])) {
      // Fehlermeldung
    } else {
      $username = $_POST["benutzername_pcsonline"];
    }

    Ich hoffe ich konnte klar machen, wo das Problem liegt.
    Gruß,
    dex (qap2-Team)
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!