Hallo, ik ben met mijn nieuwe website bezig.
Maar nu was ik aan de login aan het werken.
En ik heb een probleempje.
Als ik probeer in te loggen krijg ik alleen.
'Foute Gebruikersnaam of wachtwoord.'
Ik weet niet wat ik fout heb gedaan.
Maar kan iemand me helpen.
Ojah voor je gaat flamen: DIT IS NOG EEN BETA VERSIE!!!!

Login.php:

<?php
					if($_POST){
						$host="localhost"; // Host name
						$username="root"; // Mysql username
						$password=""; // Mysql password
						$db_name="GangsterDay"; // Database name
						// Connect to server and select databse.
						mysql_connect("$host", "$username", "$password")or die("cannot connect");
						mysql_select_db("$db_name")or die("cannot select DB");

						// username and password sent from form
						$username = $_POST['user'];
						$password = md5($_POST['pass']);
						
						$username = stripslashes($username);
						$password = stripslashes($password);
						$username = mysql_real_escape_string($username);
						$password = mysql_real_escape_string($password);

						$sql="SELECT * FROM users WHERE name='$username' and password='$password'";
						$namecheck = mysql_query("SELECT name FROM users WHERE name='$username'");
						$nameexist = mysql_num_rows($namecheck);
						$result=mysql_query($sql);
						$count=mysql_num_rows($result);
						if($count==1){
							session_register("username");
							session_register("password");
							header("location: login_success.php");
						} else {
							echo 'Foute naam of Wachtwoord.';
						}
					} else {
						echo '<form action="?page=login" method="POST">
								<br><p>Gebruikersnaam: <input type="textbox" name="user" class="username" />
								<br>Wachtwoord: <input type="password" name="pass" class="password" />
								<br><input type="submit" value="Login "></p>
							  </form>';
					}
				?>


Register.php:

<?php
	if($_POST){
	//Define!
	define('MYSQL_HOST', 'localhost');
	define('MYSQL_USER', 'root');
	define('MYSQL_PASS', '');
	define('MYSQL_DB', 'GangsterDay');
	
	//Variable's
	$conn = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
	$select = @mysql_select_db(MYSQL_DB);
	$email = $_POST['email'];    
	$username = $_POST['user'];
	$password = md5($_POST['pass']);
	$vpassword = md5($_POST['subpass']);
	$usercheck = mysql_query("SELECT name FROM users WHERE name='$username'");
	$userexist = mysql_num_rows($usercheck);
	$emailcheck = mysql_query("SELECT email FROM users WHERE email='$email'");
	$emailexist = mysql_num_rows($emailcheck);
	$ipcheck = mysql_query("SELECT ip FROM users WHERE ip='$ip'");
	$ipexist = mysql_num_rows($ipcheck);
	$ip = $_SERVER['REMOTE_ADDR'];
    $query = "INSERT INTO users (name, password, email, active, money, ip)
								VALUES('$username', '$vpassword', '$email', '0', '10000', '$ip')";

	//Query controle.
	if($query){
	//IP Controle of de gebruiker all een account heeft.
		if(!$ipexist == 0){
			echo '<center style="color: white;">Je hebt all een account op, GangsterDay.
					<br>Gelieven op je ander account in te loggen.</center>';
			exit;
		}
	//Als De gebruikersnaam all bestaat.
		if(!$userexist == 0){
			echo '<center style="color: white;">Gebruiker Bestaat all. 
				   <br>Gelieven een andere gebruikersnaam te nemen.</center>';
					unset($username);
					exit;
		}
	//Als de Wachtwoorden Niet Gelijk zijn.
		if($password !== $vpassword){
			echo '<center style="color: white;">Wachtwoorden niet gelijk.
				  <br><a href="javascript:history.go(-1)">Ga terug</a> en vul de juiste wachtwoorden in.</center>';
					unset($password);
					unset($vpassword);
					exit;
		}
	//Als het email adres all in gebruik is.
		if(!$emailexist == 0){
			echo '<center style="color: white;">Uw email adres is all in gebruik.
				<br>Gelieven een andere mail te gebruiken.</center>';
			exit;
		}
		mysql_query($query) or die(mysql_error());
		mysql_close();
		echo '<center style="color: white;">U bent nu geregistreerd.</center>';
	} else {
		echo mysql_error();
	}
	} else {
		echo '<center><form action="?page=register" method="POST">
			<br><p>Gebruikersnaam: <input type="textbox" name="user" class="username" />
			<br>Wachtwoord: <input type="password" name="pass" class="password" />
			<br>Bevestig Wachtwoord: <input type="password" name="subpass" class="bepassword" />
			<br>Emailadress <input type="textbox" name="email" class="email"/>
			<br><input type="submit" value="Registreren "><input type="reset" value="Reset de Text">
	</form>
	<br>
	<br>
		<img src="images/1/advert_001.png" align="center"/>
	</p></center>';
} ?>


Database opmaak:
[code]
id name password active money email ip
1 boedaka b36d331451a61eb2d76860e00 0 10000 [email protected] ::1
[code]
Jouw password in de database is 25 characters. Een md5() is 32 characters. Conclusie: Je passwordveld (varchar) is te kort.

Verdere opmerkingen:
Zet error_reporting(E_ALL) aan.

Geen goede controle
if($_POST)
Maak daar van
if($_SERVER['REQUEST_METHOD'] == 'POST')

Gebruik geen @ om fouten te onderdrukken, maar los het op.
$conn = @mysql_connect(......

Haal $vars buiten de quotes
...WHERE name='$username' ...
Wordt
...WHERE name='" . $username . "' ...

Bouw nette foutafhandeling in voor de query's

Session_register is antiek.
Gebruik de superglobal $_SESSION['...']

Je 2e script is lek => SQL-Injection
San, Lees er boven BETA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
En waar heb je deze baggercode vandaan?

Er gaat al zoveel fout dat je beter opnieuw kunt beginnen!
- je toont niet dat de sessie gestart wordt
- session_register is prehistory
- je vuurt onnodig "check" queries af
- sql injectie
- je maakt overbodige variabelen aan
- de juiste controles en validaties ontbreken
- or die() wil je niet in je code hebben, pas fatsoenlijke foutafhandeling toe
- je wilt niet stoppen met een exit, dat resulteert in invalid html, een verneukte pagina weergave
- inline style is ook niet echt handig, gebruik css
- onderdrukken van fouten door gebuik van @
- enz. enz.

Als je het password opslaat met md5 dan zal je in je where clause dit ook moeten doen en let op dat je database veld waarin je het wachtwoord opslaat op z'n minst 32 karakters moet kunnen bevatten
Sorry dat ik zo reageer maar ik krijg het ervan als mensen niet lezen watt ik schrijf...
Paco oste op 29/08/2010 12:10:30

San, Lees er boven BETA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Dus ...... ?
Dus ik ben er nog aan aan het werken, Btw: Ik kan nog niet met sessie's werken ik doe pas 1maand PHP Waarvan ik 2 weken niet heb gedaan en 2 weken heb geleerd ;)
Ze zullen waarschijnlijk wel lezen wat je schrijft maar willen je er gewoon duidelijk op wijzen dat je code zo lek is als een zeef en dat je er "ZEKER" naar moet kijken..

Als ik jou was zou ik gewoon luisteren en hetgeen ze hier geven van extra info/tips deze te accepteren of eventueel op te schrijven.

Denk niet dat San je helpt om op je systeem te werken hoor..
Dat komt doordat je fouten opgelost worden als je het in een keer goed schrijft. Vroeg of laat loop je met deze code tegen de lamp aan, en het is dan ook beter om het in een keer goed te schrijven. De rede dat zij zo reageren is omdat, als je je aan die regels houd, je problemen gelijk opgelost zijn, of dat je ze zelf op kan lossen omdat er een nette error komt te staan.

Het is niet om je te stangen dat we het zo zeggen; juist om je te helpen.
Paco oste op 29/08/2010 12:17:04

Dus ik ben er nog aan aan het werken, Btw: Ik kan nog niet met sessie's werken ik doe pas 1maand PHP Waarvan ik 2 weken niet heb gedaan en 2 weken heb geleerd ;)


Dus een beta versie mag totaal fout gescript zijn en niemand mag daar iets zinnigs over vertellen. In dat geval: Zoek het lekker zelf uit.
leuk dankje voor de info San (:

Reageren