Gå til innhold

Et bra email verification system?


Anbefalte innlegg

 // DERETTER GJØR DU
       # 1) Lagre denne hashen til databasen
       # 2) Bruker mail() til å sende en mail til brukerens email,
       #    med en link som ber brukeren om å gå til activate.php?hash=$hash.
       #    Med andre ord -- echo "<a href='activate.php?hash=" . $hash . "'>Trykk her for å aktivere din konto</a>"; -- 

               echo '$to      = '$user_mail';
$subject = 'Email verifisering på WeEx.Tk';
$message = 'Blablabla';
$headers = 'From: [email protected]' . "\r\n" .
   'Reply-To: [email protected]' . "\r\n" .
   'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);';
}

 

 

SI IFRA HVIS NOE ER FEIL..

Ja, det er forsåvdt riktig! :)

// Dette gjør du
#Bruk Warz sin sql kode her, for å oppdatere databasen med hashen. Hvis databasen ble oppdatert, kjører koden under, hvis ikke så send en feilmelding.

$to = $user_mail;
$subject = 'Email verifisering på WeEx.Tk';
$message = '<a href="www.weex.tk?activate.php?hash=' . $hash . '">Click her for å aktivere kontoen!</a>';
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

if(mail($to, $subject, $message, $headers)) {
echo "Du er nå registert! Sjekk emailen din for å aktivere brukeren!";
} else {
echo "Kunne ikke sende verfiserings email. Prøv på nytt!";
}

 

EDIT: Du burde sjekke ut Nettuts - How to Implement Email Verfication for New Members

Endret av Lek1
Lenke til kommentar
Videoannonse
Annonse

 // DERETTER GJØR DU
       # 1) Lagre denne hashen til databasen
       # 2) Bruker mail() til å sende en mail til brukerens email,
       #    med en link som ber brukeren om å gå til activate.php?hash=$hash.
       #    Med andre ord -- echo "<a href='activate.php?hash=" . $hash . "'>Trykk her for å aktivere din konto</a>"; -- 

               echo '$to      = '$user_mail';
$subject = 'Email verifisering på WeEx.Tk';
$message = 'Blablabla';
$headers = 'From: [email protected]' . "\r\n" .
   'Reply-To: [email protected]' . "\r\n" .
   'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);';
}

 

 

SI IFRA HVIS NOE ER FEIL..

Ja, det er forsåvdt riktig! :)

// Dette gjør du
#Bruk Warz sin sql kode her, for å oppdatere databasen med hashen. Hvis databasen ble oppdatert, kjører koden under, hvis ikke så send en feilmelding.

$to = $user_mail;
$subject = 'Email verifisering på WeEx.Tk';
$message = '<a href="www.weex.tk?activate.php?hash=' . $hash . '">Click her for å aktivere kontoen!</a>';
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

if(mail($to, $subject, $message, $headers)) {
echo "Du er nå registert! Sjekk emailen din for å aktivere brukeren!";
} else {
echo "Kunne ikke sende verfiserings email. Prøv på nytt!";
}

 

EDIT: Du burde sjekke ut Nettuts - How to Implement Email Verfication for New Members

 

 

 

Ok, har nå kommet opp med dette og har lagt in activate.php. Men av en eller annen grunn så vil ikke selve siden vises. Den er helt blank. Det må ha noe å gjøre med det som kommer etter mysql query greiene...

<?php

//signup.php
include 'connect.php';

echo '<h3>Registrer deg</h3><br />';

if($_SERVER['REQUEST_METHOD'] != 'POST')
{
   /*the form hasn't been posted yet, display it
  note that the action="" will cause the form to post to the same page it is on */
   echo '<form method="post" action="">
	 	Brukernavn: <input type="text" name="user_name" /><br />
		Passord: <input type="password" name="user_pass"><br />
	Bekreft Passord: <input type="password" name="user_pass_check"><br />
	Email: <input type="email" name="user_email"><br />
		<input type="submit" value="Registrer deg" />
	 </form>';
}
else
{
   /* so, the form has been posted, we'll process the data in three steps:
	1.	Check the data
	2.	Let the user refill the wrong fields (if necessary)
	3.	Save the data 
*/
$errors = array(); /* declare the array for later use */

if(isset($_POST['user_name']))
{
	//the user name exists
                                  $userName = $_POST['user_name'];
	if(strlen($_POST['user_name']) > 30)
	{
		$errors[] = 'Viss du har symboler og tegn i navnet ditt som "_" eller "/", osv. Send en mail til meg: 

[email protected], da legger jeg inn allt manuelt i systemet til vi fikser denne feilen.  :-D';
	}
	if(strlen($_POST['user_name']) > 30)
	{
		$errors[] = 'Brukernavnet kan ikke inneholde mer enn 30 bokstaver og tall.';
	}
}
else
{
	$errors[] = 'Brukernavn feltet er tomt, DUH!.';
}


if(isset($_POST['user_pass']))
{
	if($_POST['user_pass'] != $_POST['user_pass_check'])
	{
		$errors[] = 'Passordene matcher ikke, fiks det!';
	}
}
else
{
	$errors[] = 'Passord feltet kan jo ikke være tomt, er du helt tett i pappen eller?';
}

if(!empty($errors)) /*check for an empty array, if there are errors, they're in this array (note the ! operator)*/
{
	echo 'Uh-oh.. a couple of fields are not filled in correctly..<br /><br />';
	echo '<ul>';
	foreach($errors as $key => $value) /* walk through the array so all the errors get displayed */
	{
		echo '<li>' . $value . '</li>'; /* this generates a nice error list */
	}
	echo '</ul>';
}
else
{
	//the form has been posted without, so save it
	//notice the use of mysql_real_escape_string, keep everything safe!
	//also notice the sha1 function which hashes the password
	$sql = "INSERT INTO
				users(user_name, user_pass, user_email ,user_date, user_level)
			VALUES('" . mysql_real_escape_string($_POST['user_name']) . "',
				   '" . sha1($_POST['user_pass']) . "',
				   '" . mysql_real_escape_string($_POST['user_email']) . "',
					NOW(),
					0)";

	$result = mysql_query($sql);
	if(!$result)
	{
	        //something went wrong, display the error
	        echo 'Something went wrong while registering. Please try again later.';
	        //echo mysql_error(); //debugging purposes, uncomment when needed
	}
	else
	{
       		$lastID = mysql_insert_id(); // Brukerens ID (Henter siste id som ble satt inn)
       		$hash = sha1($lastID); // Lager en hash

       		$sql = 'UPDATE users SET user_verification = '.$hash.' WHERE id = '.$lastID.'';
	mysql_query($sql);

$to = $user_mail;
$subject = 'Registrering på WeEx.Tk';
$message = '<a href="www.weex.tk?activate.php?hash=' . $hash . '">Klick her for å aktivere kontoen!</a>';
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

if(mail($to, $subject, $message, $headers)) {
        echo 'Du er nå registert! Sjekk emailen din for å aktivere brukeren!';
} else {
       	echo 'Kunne ikke sende verfiserings email. Prøv på nytt!';
}

?>

 

 

Hvis du vil se på denne siden så er det http://weex.tk/signup2.php

Lenke til kommentar

Bytt ut

$sql = 'UPDATE users SET user_verification = '.$hash.' WHERE id = '.$lastID.'';

 

med

 

$sql = "UPDATE users SET user_verification = '".$hash."' WHERE id = '".$lastID."'";

 

Et skudd i mørket, men har hendt at jeg har fått blanke sider på grunn av at det ikke er singleqoutes rundt variabler i sqln :p

Endret av Lek1
Lenke til kommentar

Så vidt jeg kan se så har du glemt å avslutte elsen....

 else {
$lastID = mysql_insert_id(); // Brukerens ID (Henter siste id som ble satt inn)
$hash = sha1($lastID); // Lager en hash

 

Når det gjelder single quotes i queries så skal ikke det settes rundt nummere. Men jeg pleier å skrive

echo $sql;

 

Slik at du ser hva spørringen sier og kan kopiere den og kjøre den via phpMyAdmin for å være sikker på at den funker.

 

Og PS: Hvis du har et litt decent webhotell kan du logge inn på kontroll panelet og lese error loggen. Da vil du finne ut hva som er feil litt lettere (i stedet for en helt blank side!)

Endret av Warz
Lenke til kommentar

Nei, vi kan ikke fikse hele koden. Vi er her for å hjelpe deg, ikke for å kode for deg. Jeg synes vi har så og si gitt deg koden nå, og utifra hva vi har gitt deg burde du ha ferdig kode.

 

 

Folk driver og lager brukere for kødd og jeg må gå inn og slette dem hele tiden, kan dere ikke bar hjelpe meg med denne?

Lenke til kommentar

Det er forskjell på å hjelpe noen og å gjøre det for noen. Tror ikke læreren din pleier å gjøre leksene for deg heller.

 

Nei, men hvordan skal jeg lære noe når jeg ikke kan ha siden oppe fordi folk kødder med registreringa, dette er det eneste jeg trenger å få gjort akuratt nå, jeg reiser til thailand i 3 uker imårra og når jeg kommer hjem igjen vil sia være proppfull av kødde brukere fordi jeg ikke har fått email systemet eller at jeg ikke kan slette dem...

Lenke til kommentar

Hvorfor kan dere ikke bare "Hjelpe meg med denne"? Dette er jo et php forum der dere hjelper folk som trenger hjelp...

 

såvidt jeg kan se har du fått hjelp og tipps i tråden allerede. i alle mine år på forumet har jeg nesten aldri sett noen skrive ferdig koden gratis for noen andre så det må du nesten gjøre selv.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...