Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Kirjautumis/rekisteröitymis systeemi (Mysql)

Clacier [15.11.2010 20:25:24]

#

Simppeli koodi.

Sisältää siis käytännössä profiilisivun, rekisteröitymislomakkeen / skriptin sekä loginlomakkeen / skriptin.

Demo: http://rahamaa.fi/usersystem/
Samasta osoitteesta löydät myös .rar paketin.

config.php

<?php
$host = ""; // Hostin nimi
$username = ""; // Mysql käyttäjänimi
$password = ""; // Mysql salasana
$db_name = ""; // Tietokannan nimi

// Yhdistetään tietokantaan
mysql_connect($host, $username, $password)or die("Yhteyden muodostus epäonnistui. ");
mysql_select_db($db_name)or die("Yhteyden muodostus valittuun tietokantaan epäonnistui. ");
?>

asennus.php

<?php
include "config.php"; // Avataan tietokantayhteys
mysql_query("CREATE TABLE kayttajat (
         ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
      luomisaika DATETIME,
      salasana TEXT,
      nimi TEXT)");
print 'Tietokannat luotu joten voit poistaa tiedoston asennus.php';
?>

index.php

<?php
session_start();
include "config.php"; // Avataan tietokantayhteys

	if($_GET['s'] == "logout"){
		session_destroy();
		die("Kirjauduit ulos!<br />");
	}

	if(isset($_POST['submit'])){
	$tunnus = mysql_real_escape_string($_POST['tunnus']);
	$salasana = mysql_real_escape_string($_POST['salasana']);

		$sql = mysql_query("SELECT * FROM kayttajat WHERE nimi = '$tunnus' AND salasana = '".md5($salasana)."'") or die(mysql_error());
		if(mysql_num_rows($sql)) {
			$_SESSION['nimi'] = $_POST['tunnus'];
			print '<span style="color: green">Kirjautuminen onnistui! </span><br /><br />';
		} else {
			print '<span style="color: red">Kirjautuminen epäonnistui! </span><br /><br />';
		}

	}

	if(isset($_SESSION['nimi'])){ // Jos kirjautuneena
		print 'Olet kirjautuneena nimimerkillä <b>' . $_SESSION['nimi'] . '</b>!<br />';
		print '* <a href="profiili.php?tunnus=' . $_SESSION['nimi'] . '">Profiilisivusi</a><br />';
		print '* <a href="?s=logout">Kirjaudu ulos</a><br />';
	} else { // Muuten näytetään kirjautumisformi

?>
» Kirjaudu sisään <br /><form method="post" action="">
	Tunnus: <input type="text" name="tunnus" /><br />
	Salasana: <input type="password" name="salasana" /><br />
<input type="submit" name="submit" value="Kirjaudu!" /></form>

<br />
<br />

Et omista tunnusta?<br />
» <a href="rekisteroidy.php">Rekisteröidy!</a><br />

<?php
}
$kayttajat = mysql_query("SELECT nimi FROM kayttajat");
$kayttajat2 = mysql_query("SELECT nimi,luomisaika FROM kayttajat ORDER BY ID DESC LIMIT 1");
$maara = mysql_num_rows($kayttajat);
$rivi = mysql_fetch_array($kayttajat2);
print '<br /><br />Tähän palveluun on rekisteröitynyt yhteensä <b>' . $maara . '</b> käyttäjiä. <br />';
print 'Uusin käyttäjä: <a href="profiili.php?tunnus=' . $rivi['nimi'] . '">' . $rivi['nimi'] . '</a>, joka rekisteröityi <i>' . $rivi['luomisaika'] . '</i><br /><br />';
print '<h1>Lataus</h1>Voit ladata vapaasti käytettävän, MySQL rekisteröinti/login systeemin .rar pakettina: <a href="get_it.php">usersystem.rar</a>';

?>

profiili.php

<?php
session_start();
include "config.php"; // Avataan tietokantayhteys

$tunnus = mysql_real_escape_string($_GET['tunnus']);
$kayttaja = mysql_query("SELECT * FROM kayttajat WHERE nimi = '$tunnus'");
$tulos = mysql_num_rows($kayttaja);

	if($tulos == 0){
		print 'Hakemaasi käyttäjää ei löytynyt! <a href="index.php">Etusivulle</a>';
	} else {
		$rivi = mysql_fetch_array($kayttaja);
		print '<table width="30%" border="1" cellspacing="1">';
		print '<tr><td>Nimimerkki:</td><td><b>' . $rivi['nimi'] . '</b></td></tr>';
		print '<tr><td>Luomisaika:</td><td><b>' . $rivi['luomisaika'] . '</b></td></tr>';
		print '</table>';
		print '<br /><a href="index.php">Etusivulle</a>';
	}

?>

rekisteroidy.php

<?php
session_start();
include "config.php";
$tunmax = 9; // Tunnuksen maksimipituus
$tunmin = 3; // Tunnuksen miminipituus

	if(isset($_POST['submit'])){ // Jos rekisteröitymislomake on lähetetty

$tunnus = mysql_real_escape_string($_POST['tunnus']);
$salasana = mysql_real_escape_string($_POST['salasana']);
$salasana_vahvistus = mysql_real_escape_string($_POST['salasana_vahvistus']);

	if(strlen($tunnus) < $tunmin) {
		die('<span style="color: red">Valitsemasi nimimerkki oli liian lyhyt!<br /><br /><a href="rekisteroidy.php">Takaisin</a>');
	}

	if($salasana != $salasana_vahvistus){
		die('<span style="color: red">Salasanat olivat erit!</span> <br /><br /><a href="rekisteroidy.php">Takaisin</a>');
	}
	if(preg_match("/[<>%']/", $nick)) { // [ ] väliin kiellettyt merkit nimimerkissä
		die('<span style="color: red">Nimimerkkisi sisälsi kiellettyjä merkkejä!</span> <br /><br /><a href="rekisteroidy.php">Takaisin</a>');
	}

$date = date("Y-m-d H:i:s");
$sql = mysql_query("SELECT * FROM kayttajat WHERE nimi LIKE '$tunnus'");
$result = mysql_num_rows($sql);

	if($result == 0) {
		$salasanamd5 = md5($salasana);
		mysql_query("INSERT INTO kayttajat (nimi,salasana,luomisaika) VALUES ('$tunnus', '$salasanamd5', '$date')") or die(mysql_error());
		print '<span style="color: green">Rekisteröityminen onnistui, kirjaudu sisään <a href="index.php">etusivulta</a></span>';
	} else {
		print '<span style="color: red">Nimimerkki oli varattu!</span> <br /><br /><a href="rekisteroidy.php">Takaisin</a>';
	}

} else {
?>
<form method="post" action="">
» Rekisteröidy<br />

<table width="25%">
<tr><td>Nimimerkki:</td><td><input type="text" name="tunnus" maxlength="<?php echo $tunmax; ?>"></td></tr>
<tr><td>Salasana:</td><td><input type="password" name="salasana"></td></tr>
<tr><td>Salasana uudelleen:</td><td><input type="password" name="salasana_vahvistus"></td></tr>
<tr><td><input type="submit" name="submit" value="Rekisteröidy"></td></tr>
</table>
</form><br /><br />

- Salasanojen täytyy olla samat <br />
- Tunnuksen tulee olla <?php print "$tunmin - $tunmax"; ?> merkkiä pitkä <br />

<?php
}
?>

Vastaus

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

Tietoa sivustosta