Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Sähköpostiosoitteen vahvistaminen (MySQL)

Rocceri [02.07.2009 14:11:45]

#

Koodin tarkoituksena on tarkistaa, onko rekisteröityneen käyttäjän sähköpostiosoite vahvistettu.
Tätä voi hyödyntää esimerkiksi erillaisten kirjautumisjärjestelmien kanssa.
Koodin demo versio on vapaasti kokeiltavana osoitteessa http://kamuweb.jouluserver.com/email/index.php

Käytöstä vielä sen verran, että jos tätä halutaan käyttää kirjautuessa ja sähköpostiosoitteen pitää olla vahvistettu, niin tarkistus kuuluu tehdä niin, että tarkistetaan onko 'vahvistettu' -kenttä arvoltaan 1 vai jotain muuta. Arvolla 1 päästään läpi, ja muut arvot ovat kiellettyjä.

Serverillä täytyy tietenkin olla mail() -funktio tätä skriptiä varten ja myös MySQL tuki.
Käyttäkää viisaasti ;)

register.php

<?php
include("settings.php");
if(isset($_GET["rek"])) {
	//Otetaan tiedot muuttujiin
	$tunnus = $_POST["tunnus"];
	$email = $_POST["email"];
	//Haetaan tietojen perusteella jäseniä
	$haku = mysql_query("SELECT * FROM $taulu WHERE tunnus = '$tunnus'") or die(mysql_error());
	//Jos jäseniä ei löytynyt, voidaan rekisteröityä
	if(mysql_num_rows($haku) == 0) {
		//Luodaan aktivointikoodi, jossa kirjaimia ja numeroita
		for($i = 0; $i < 25; $i++) {
			$rand1 = rand(25659568396968,3474579580572626357);
			$rand3 = rand(25659568396968,3474579580572626357);
			$rand4 = rand(25659568396968,3474579580572626357);
			$rand5 = rand(25659568396968,3474579580572626357);
			$letters = "abcdefghijklmnopqrstuvwxyz";
			$randletters = rand(1,25);
			$totalrandletters = $letters[$randletters];
			$aktivointikoodi = "$totalrandletters$rand1$totalrandletters$rand2$totalrandletters$rand3$totalrandletters$rand4$totalrandletters$rand5$totalrandletters";
		}
		//Lisätään käyttäjä
		mysql_query("INSERT INTO $taulu (tunnus, email, aktivoitu) VALUES ('$tunnus', '$email', '$aktivointikoodi')") or die(mysql_error());

		//Asetetaan pari header tietoa viestiin
		$header = "MIME-Version: 1.0 \r\n";
		$header .= "Content-type: text/html; charset=iso-8859-1 \r\n";
		$header .= "From: $omaemail";

		//Muotoillaan viesti
		$viesti = "<h1>Tervetuloa $tunnus!</h1><a href=\"$omaosoite/aktivoi.php?aktivoi=$aktivointikoodi\">Aktivoi sähköpostiosoitteesi!</a>";

		//Lähetetään viesti
		mail($email, "Vahvista sähköpostiosoitteesi, $tunnus", "$viesti", $header);

		//Ohjataan takaisin
		header("Location: register.php?reg");
	} else echo "Valitettavasti haluamasi tunnus on jo käytössä";
}
if(isset($_GET["reg"])) {
	//Jos on rekisteröidytty, näytetään ilmoitus
	echo "Rekisteröityminen onnistui!<br>Sinulle lähetettiin vahvistusviesti sähköpostiin, jossa on linkki vahvistussivulle.<br><br>";
}
mysql_close($yhteys);
?>
<form action="?rek" method="post">
	Tunnus:<br>
	<input type="text" name="tunnus"><br><br>
	Sähköpostiosoite:<br>
	<input type="text" name="email"><br><br>
	<input type="submit" value="Lähetä">
</form>

aktivoi.php

<?php
include("settings.php");
if($_GET["aktivoi"]) {
	$aktivointikoodi = $_GET["aktivoi"];
	mysql_query("UPDATE $taulu SET aktivoitu = 1 WHERE aktivoitu = '$aktivointikoodi'") or die(mysql_error());
}
mysql_close($yhteys);
?>
Tunnuksesi on nyt aktivoitu

settings.php

<?php
//Yhteyden muodostaminen
$yhteys = mysql_connect("localhost", "", "");
mysql_select_db("");

//Taulu johon tiedot kirjoitetaan
$taulu = "email";

//Sähköpostiosoite, josta aktivointiviesti lähetetään
$omaemail = "me@myserver.com";

//aktivointi.php tiedoston sijainti, esimerkiksi http://pekansivut.fi/kansio
//HUOM! http:// (Jollei tiedostopolku) ja ei viimeistä kauttaviivaa.
//Esimerkin mukaisesti osoite olisi $omaosoite (http://pekansivut.fi/kansio) /aktivointi.php
$omaosoite = "http://pekansivut.fi/kansio";

//Luodaan taulu
mysql_query("CREATE TABLE $taulu(tunnus TEXT, email TEXT, aktivoitu TEXT)");
?>

tarkista.php

<?php
include("settings.php");

if($_POST["tunnus"]) {
	$tunnus = $_POST["tunnus"];
	$haku = mysql_query("SELECT * FROM $taulu WHERE tunnus = '$tunnus'") or die(mysql_error());

	if(mysql_num_rows($haku) == 1) {
		$taulukko = mysql_fetch_array($haku);
		if($taulukko["aktivoitu"] == 1) {
			echo "Tunnuksen '".$taulukko["tunnus"]."' sähköpostiosoite on aktivoitu!<br>";
		} else echo "Tunnuksen '".$taulukko["tunnus"]."' sähköpostiosoitetta ei ole aktivoitu!<br>";
	} else echo "Tunnusta '$tunnus' ei löytynyt!<br>";
}
mysql_close($yhteys);
?>
<form action="tarkista.php" method="post">
	Tarkista onko tunnuksen sähköpostiosoite aktivoitu:<br><br>
	Tunnus:<br>
	<input type="text" name="tunnus"><br><br>
	<input type="submit" value="Tarkista">
</form>

MIB [03.09.2009 15:38:47]

#

Hauska koodi, harmi että tätä ei ole julkaistu :/

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta