login en regisrteer script nodig

Status
Niet open voor verdere reacties.

tim66

Gebruiker
Lid geworden
2 feb 2013
Berichten
45
ik heb een login en registreer script nodig.
net zoals op een echte website je kan inloggen en registreren.

alvast bedankt.
 
Laatst bewerkt:
Oh... en wat heb je al zelf gedaan om dat op te zetten? De site heet helpmij, niet wijdoenalhetwerkvoorje.
 
Dan is er niet genoeg gegoogled :).

Er zijn genoeg voorbeelden te vinden.

Het onderstaande gebruik ik zelf ook altijd :).
Neem aan dat je de rest zoals; MySQL er zelf bij kunt verzinnen etc.

Groeten, Ramon

PHP:
<?php
class LoginAuth {
	
	public function __construct(){
		//Geen constructing hier! :)
	}
	
	public function QueryHandler($query){
		$query =  mysql_real_escape_string($query);
		return $query;
	}
	
	public function RegisterUser($username, $password, $email){
		
		$query = mysql_query("SELECT * FROM users WHERE username='".$username."'");
		if(mysql_num_rows($query) == 1){
			return false; // Ohcrap! user bestaat al!
		}
		
		$ding = "INSERT INTO users (username, ehash, password, email, ip) VALUES ('".self::QueryHandler($username)."', '".md5($username.time().$password.$email)."', '".md5($password)."', '".base64_encode($email)."', '".base64_encode($_SERVER['REMOTE_ADDR'])."')";
		
		mysql_query($ding) or die(mysql_error()); //Fout? gooien een false terug
		return true;// goed? mooizo :)
	}
	
	public function Login(){
		if(isset($_COOKIE['username']) && isset($_COOKIE['ehash'])){
			$query = mysql_query("SELECT * FROM users WHERE username='".self::QueryHandler($_COOKIE['username'])."' AND ehash='".self::QueryHandler($_COOKIE['username'])."'");
			if(mysql_num_rows($query) > 1){
				return false;
			}
			else
			{
				return true;	
			}
		}
	}
	
	public function CheckLogin($username, $password){
		$query = mysql_query("SELECT * FROM users WHERE username='".$username."' AND password='".md5($password)."' ");
		if(mysql_num_rows($query) != 1){
			return false;
		} else {
			$row = mysql_fetch_assoc($query);
			setcookie("username", $row['username'], time()+3600); // 1 uur
			setcookie("ehash", $row['ehash'], time()+3600); // 1 uur
			return true;
		}
	}
	
	public function getUsername(){
		
		if(self::Login() == true){
			return $_COOKIE['username'];
		}
		
	}
	
	public function getValues($row = 'ID'){
		if(self::Login() == true){
			$query = mysql_query("SELECT * FROM users WHERE ehash='".$_COOKIE['ehash']."'");
			$gooiterug = mysql_fetch_assoc($query);
			return $gooiterug[$row];
		}
	}
	
	
}// end class :-)

mysql_connect('localhost', 'user', '1235');
mysql_select_db('authclass');

$LoginAuth = new LoginAuth(); // Roepen de Class aan

?>

<!-- self submitting form -->
<form action="" method="post">
Gebruikersnaam: <br />
<input type="text" name="username" /><br />
Wachtwoord:<br />
<input type="password" name="password" /><br />
Wachtwoord (Nogmaals):<br />
<input type="password" name="password1" /><br />
Email:<br />
<input type="email" name="email" /><br />
<br />
<input type="submit" value="Registreer" name="submitform" />
</form>

<?php
//Ga er hier van uit dat je de class al geincluded hebt :)

if(isset($_POST['submitform'])){
	if($_POST['password'] == $_POST['password1']){
		if($LoginAuth->RegisterUser($_POST['username'], $_POST['password'], $_POST['email']) == true){
			echo "Gebruiker toegevoegd!";
		}
		else{
			echo "Ai! Probleempje!! Gebruiker bestaat al?" ;
		}
	}
}

?>

<form action="" method="post">
Gebruikersnaam: <br />
<input type="text" name="username" /><br />
Wachtwoord:<br />
<input type="password" name="password" /><br />
<br />
<input type="submit" name="submitlogin" value="Login" />
</form>

<?php

if(isset($_POST['submitlogin'])){
	if($LoginAuth->CheckLogin($_POST['username'], $_POST['password']) != true){
		echo "Je account bestaat niet";	
		}
		else{
			echo "hoi";
		}
}
?>
 
@ItsMonnie ik zou nog even kijken naar je login en wat dingen aanpassen als je dit nu gebruikt. Je hebt een function voor mysql_real_escape_string maar die gebruik je niet overal zoals in CheckLogin gedeelte, dus die zijn gevoelig voor SLQ injecties. MD5 zou ik ook niet meer gebruiken die zijn nu zo snel te kraken, zou gebruik maken van sha512 met een salt.
 
Mee eens!
Maargoed, het is een stukje code die ik jaren geleden geschreven heb ;). en nogsteeds goed genoeg om een basis aan te leggen! :)
 
kun je je code iets beter uitleggen en kun je me een stukje code geven wat ik in een html document zet en dat ik dan kan inloggen en registreren.
 
Als je het spul een beetje leest zie je dat het er allemaal al instaat :).

Registratie:
<!-- self submitting form -->
<form action="" method="post">
Gebruikersnaam: <br />
<input type="text" name="username" /><br />
Wachtwoord:<br />
<input type="password" name="password" /><br />
Wachtwoord (Nogmaals):<br />
<input type="password" name="password1" /><br />
Email:<br />
<input type="email" name="email" /><br />
<br />
<input type="submit" value="Registreer" name="submitform" />
</form>

PHP:
<?php
//Ga er hier van uit dat je de class al geincluded hebt :)
 
if(isset($_POST['submitform'])){
    if($_POST['password'] == $_POST['password1']){
        if($LoginAuth->RegisterUser($_POST['username'], $_POST['password'], $_POST['email']) == true){
            echo "Gebruiker toegevoegd!";
        }
        else{
            echo "Ai! Probleempje!! Gebruiker bestaat al?" ;
        }
    }
}
 
?>

Login:
<form action="" method="post">
Gebruikersnaam: <br />
<input type="text" name="username" /><br />
Wachtwoord:<br />
<input type="password" name="password" /><br />
<br />
<input type="submit" name="submitlogin" value="Login" />
</form>
PHP:
<?php
 
if(isset($_POST['submitlogin'])){
    if($LoginAuth->CheckLogin($_POST['username'], $_POST['password']) != true){
        echo "Je account bestaat niet"; 
        }
        else{
            echo "hoi";
        }
}
 
moet ik nog een database maken?
en moet ik de php scripten opslaan?
en als ik hem moet opslaan waar moet dat?

en ItsMonnie je had in een van je post gezet dat ik er zelf mysql bij moest verzinnen.
dat kan ik niet.
ik ben slecht in php.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan