Login Bereich erstellen

Ich glaube, du hast nicht richtig verstanden, was das ganze ist.

Einfach erklärt, muss man darauf achten, das die (My)SQL-Anweisung nicht "modifiziert" wird, sondern dass z.B. Text in Anführungszeichen bleibt und dass nicht andere Zeichen, die evtl. das Query beinflussen, mitreingeschrieben werden.

Nun, z.B. die Funktion [phpf]mysql_real_escape_string[/phpf] schützt davor. Man übergibt ihr eine Zeichenkette (=String) und sie liefert eine "sichere" Zeichenkette zurück, bei der gefährliche Zeichen umgewandelt worden sind.

Die Funktion [phpf]mysql_query[/phpf] führt ein MySQL-Query aus, spricht ein Befehl in der Form einer Zeichenkette.
In diese Zeichenkette verpacken wir die Eingabedaten des Benutzers, doch wie wir oben gelernt haben, müssen wir sie zuerst überprüfen und evtl. einige Zeichen umwandeln:
PHP:
$sql = "SELECT * FROM users WHERE username='"  .  mysql_real_escape_string($username)  .  "' AND pw='"  .  mysql_real_escape_string($password);

$result = mysql_query($sql);
 
mal ne frage... weil ich kapiers glaub immer noch nicht wirklich... also ich verstehe zwar was du mit dem code jetzt machst, aber ich verstehe die ganzen zusammenhänge noch nicht.


soll ich den code jetzt einfach mit meinem ersetzen und dann funktioniert?


danke auf jedenfall schonmal an alle für eure hilfe, ohne euch wäre ich sowas von aufgeschmissen****** naja beim nächsten mal weiß ich es dann wenigstens :)
 
[phpf]mysql_real_escape_string[/phpf] erfordert eine offene MySQL-Verbindung.
Also zuerst [phpf]mysql_connect()[/phpf] ausführen.

Aber ich muss sagen, dass dein Loginskript sehr sehr unsicher ist!
Immer Daten escapen, bevor du sie in ein SQL-Query packst!!
 
sicher hin oder her... das mir im mom noch egal... ich tu seit tagen mit dem scheiss rum und bekomms einfach nicht hin... das kanns doch nicht sein.

ich hab jetzt das nächste problem... irgendwie wird durch das script der user nicht in der datenbank gespeichert... warum nicht****


Code:
<?php


$submit = $_POST['submit'];
$fullname = strip_tags($_POST['fullname']);
$username = strip_tags($_POST['username']);
$password = strip_tags($_POST['password']);
$repeatpassword = strip_tags($_POST['repeatpassword']);
$date = date("Y-m-d");

if ($submit)
{
	
	if ($fullname&&$username&&$password&&$repeatpassword)
	
{ 
	  
		if ($password==$repeatpassword)
	  	{ 
	   		if (strlen($username)>25||strlen($fullname)>25)
			{ echo "Dein Username oder Vollständiger Name ist zu lang"; }
			else 
			{ if (strlen($password)>25||strlen($password)<6)
		  	{echo "Password muss zwischen 6 und 25 Zeichen enthalten";} 
		     else 
			 	{
			 	$password = md5($password);
	  		  	$repeatpassword = md5($repeatpassword);
		  
		  		$connect = mysql_connect("localhost","user","mypw");
				mysql_select_db("db1002505-phplogin");
				
				$queryreg = mysql_query("INSERT INTO users VALUES ('','$fullname','$username','$password','$date'");
				echo "Du wurdes erfolgreich Registriert! Return to login page";
			  	  }
				  
		
			} }
else echo "Die Passwörter stimmen nicht überein!";
} 

else echo "Bitte fülle alle Felder aus!";
	
}

?>

<html>

<form action='register.php' method='POST'>
		<table>
        		<tr>
                	<td>
                    Dein vollständiger Name:
                    </td>
                    <td>
                    <input type='text' name='fullname'>
                    </td>
                </tr>
                <tr>
                	<td>
                    Wähle einen Nutzername:
                    </td>
                    <td>
                    <input type='text' name='username'>
                    </td>
                </tr>
                <tr>
                	<td>
                    Wähle ein Password
                    </td>
                    <td>
                    <input type='password' name='password'>
                    </td>
                </tr>
                <tr>
                	<td>
                    Bitte wiederhole dein Password
                    </td>
                    <td>
                    <input type='password' name='repeatpassword'>
                    </td>
                </tr>
 		</table>
        <p>
        <input type='submit' name='submit' value='Register'>
        
        
</form>
</html>


ich schau alles zum 20mal durch... ich finde nix ich weiß einfach nicht warum der mir den user nicht in die datenbank einträgt****** weil die echomeldung kommt...

nur wenn ich mich anmelden will... existiert der nutzername nicht und in der datenbank ist er auch nicht
 
Zuletzt bearbeitet:
Dein MySQL-Query ist falsch, es fehlt eine runde Klammer.
So ist es richtig:
PHP:
$queryreg = mysql_query("INSERT INTO users VALUES ('','$fullname','$username','$password','$date')");
 
Danke ComFreek ich glaub ohne dich würde ich hier sterben :)

aber ich komm nicht klar mit dem escapen, versuche jetzt schon mehrere stunden durch lesen in foren und google den fehler zu finden, aber irgendwie mangeld es mir einfach ein wissen :(

ich habe mir schon gedacht, dass dann das mit dem "numrows" nicht mehr funktioniert wenn ich escape?

Code:
<?php

session_start();

$connect = mysql_connect ("localhost","****","****") or die ("kann nicht connecten to db");
	
mysql_select_db("db1002505-phplogin") or die ("kann db nicht finden");

$username = mysql_real_escape_string ($_POST['username']);
$password = mysql_real_escape_string ($_POST['password']); 

if($username&&$password)
{ 	
	$sql = "SELECT * FROM users WHERE username='"  .  mysql_real_escape_string($username)  .  "' AND pw='"  .  mysql_real_escape_string($password);

	$result = mysql_query($sql); 
	
	$numrows = mysql_num_rows($result);
	
if ($numrows!=0) 
{
	while ($row = mysql_fetch_assoc($result))
	{
		$dbusername = $row['username'];
		$dbpassword = $row['password'];
	}
	
		if ($dbusername==$username&&$dbpassword==md5($password))
		{
		
		echo "Du bist eingeloggt! <a href='member.php'>Klicke hier um zum Memberbereich zu kommen</a>";
		$_SESSION['username']=$username;
			
		}
		else
			echo "Falsches Password!";
}
else
	die("Dieser Username existiert nicht!");
	
}
else
	die("Bitte gib einen Username und ein Password ein!");

?>

Dieser Fehler kommt...
Warning: mysql_num_rows() expects parameter 1 to be resource, null given in /data/multiserv/users/442745/projects/1002505/www/login.php on line 18
Dieser Username existiert nicht!

muss ich da beim registrieren dann auch escapen? irgendwie ist bei mir da der wurm drinn...
 
Zuletzt bearbeitet:
Die Variable $query existiert in den Skript nicht.
Ersetze das mal mit $result. Bei mysql_fetch_assoc ist das gleiche Problem.
 
danke für den hinweis.
aber immer noch das selbe

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /data/multiserv/users/442745/projects/1002505/www/login.php on line 18
Dieser Username existiert nicht!
 
$sql = "SELECT * FROM users WHERE username='" . mysql_real_escape_string($username) . "' AND pw='" . mysql_real_escape_string($password);

Wozu erneut escapen?
Hast du doch schon vorher mit:

$username = mysql_real_escape_string ($_POST['username']);
$password = mysql_real_escape_string ($_POST['password']);

und dazu

if ($numrows!=0)

kann auch einfach nur if ($numrows) lauten
 
Zuletzt bearbeitet:
Zurück