Gå til innhold

Bedre måter å lage et registreringsskjema på?


Anbefalte innlegg

Er det noen bedre måte å lage et registreringsskjema på?

 

registreringsskjema1
--
hvis fyllt ut {
skriv $_POST[data] til database
lage cookie med md5(brukernavn, passord)
header(neste side)
} else {
header(samme side)
}


registreringsskjema2
--
hvis cookie med md5(brukernavn og passord) == fra database md5(brukernavn, passord) og få id

hvis fyllt ut {
hente $_POST[data]
skriv info til database hvor id
lage ny cookie med md5(brukernavn, passord)
header(neste side)
} else {
header(samme side)
}

Endret av rmrf
Lenke til kommentar
Videoannonse
Annonse

Tja. En bedre måte måtte vel være å bruke PHP-syntaks/funksjoner. :p

 

Bortsett fra det kan jeg ikke skjønne hvordan du kan påstå at det scriptet der er så fryktelig tungvint/usikkert. Til sammenlikning har jeg ~400 linjer i registrerings/loginscriptet jeg bruker på unrealized.org, så ikke klag! ;)

 

Prøv å skrive scriptet, så finner du fort ut hvor eventuelle feil og mangler oppstår.

Endret av Lokaltog
Lenke til kommentar

Her følger registeringsskjemaet. Kom gjerne med endringer/forbedringer!

 

step1.php

-----------

<?
//hvis submit-knappen er trykket
if ($_POST['step1'] == 1) {

//starter session
session_start();

//hvis brukeren allerede har registrert step1
//if ($_SESSION['step1'] == 1) { die(header("location: error.php?error=registered")); }

$username = $_POST['username'];
$password = $_POST['password'];
$retype_password = $_POST['retype_password'];
$errors = "0";

//kobler til database
include('db_connect.inc');

//hvis username er skrevet inn og ikke finnes i db
if ($username || strlen($username) < 5) {
$username_used = @mysql_query("SELECT username FROM registration WHERE username='$username'") or die(header("location: error.php?error=dbfail"));

//hvis username finnes i databasen
if (!mysql_num_rows($username_used) == 0) {
$errors++;
}
} else {
$errors++;
}

//hvis passordet er skrevet inn og er likt med retyped og er over 6 bokstaver
if (!$password || $password != $retype_password || strlen($password) < 6) {
$errors++;
}

//hvis ingen errorer er funnet
if ($errors == 0) {

//legger til brukernavn og md5-enkrypta passord i en session
$encrypt_password = md5($password);
$_SESSION['step1user'] = $username;
$_SESSION['step1pass'] = $encrypt_password;

//skriver til database
@mysql_query("INSERT INTO registration (username, password, encrypt_password) VALUES ('$username', '$password', '$encrypt_password')") or die(header("location: error.php?error=dbfail"));
$_SESSION['step1'] = 1;
header("location: step2.php");
}
mysql_close($connection);
}

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Step 1</title>
<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form name="step1" action="<? echo $PHP_SELF;?>" method="post">
<input type="hidden" name="step1" value="1" />

<!-- Username og password -->
<div>
Username:
  <input type="text" name="username" maxlength="20" size="20" value="<?echo $_POST['username'];?>" />
</div>

<div>
Password:
 <input type="password" name="password" maxlength="20" size="20" />
Re-type password:
 <input type="password" name="retype_password" maxlength="20" size="20" />
</div>


<!-- Submitknapp -->
<div><br />
<input value="next >>" type="submit" name="submit" />
</div>

</form>
</body>
</html>

 

step2.php

-----------

<?
//hvis submit-knappen er trykket
if ($_POST['step2'] == 1) {

session_start();

//kobler til database
include('db_connect.inc');

$errors = "0";
$country = $_POST['country'];

if ($_SESSION['step1user'] && $_SESSION['step1pass']) {
//henter username og password fra sessions
$sess_username = $_SESSION['step1user'];
$sess_password = $_SESSION['step1pass'];

//sjekker om det er samme bruker
$db_data = @mysql_fetch_array(mysql_query("SELECT id, username, encrypt_password FROM registration WHERE username='$sess_username' AND encrypt_password='$sess_password'")) or die(header("location: error.php?error=dbfail")); 

$db_id = $db_data[id];
if (!$db_id > 0) {  die(header("location: error.php?error=session")); }
} else { die(header("location: error.php?error=unknown")); }

//hvis country er skrevet inn
if (!$country) {
$errors++;
}

//hvis ingen errorer er funnet
if ($errors == 0) {

//skriver til database
@mysql_query("UPDATE registration SET country='$country' WHERE id=$db_id") or 
die(header("location: error.php?error=dbfail"));
header("location: step3.php");
}
mysql_close($connection);
}

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Step 2</title>
<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<form name="step1" action="<? echo $PHP_SELF;?>" method="post">
<input type="hidden" name="step2" value="1" />

<!-- Username og password -->
<div>
Country:
  <input type="text" name="country" maxlength="20" size="20" value="<?echo $_POST['country'];?>" />
</div>

<!-- Submitknapp -->
<div><br />
<input value="next >>" type="submit" name="submit" />
</div>

</form>
</body>
</html>

Endret av rmrf
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...