Registrierungsformular über mehrere Schritte und mit eingebauter Überprüfung

H3llGhost

Registered User
Hallo Leute,

ich habe vor einen Registrierungsformular über mehrere Seiten zu schreiben, d.h. mit mehreren Schritten etc.
Dazu habe ich als erstes folgenden Code:

PHP:
<?php
require ("config.inc");
session_start();

if (($_POST['send']!= "1") || (isset($err_text)))
{
require ("includes/member1.inc");
require ("includes/peintragen.js");
}
else
{    
require ("includes/member2.inc");
}
?>

Da fangen aber meine Probleme schon an ...
Es werden wahrscheinlich drei oder noch mehr Schritte werden.
Wie kann ich da am Besten unterscheiden?

Das JavaScript lassen wir außen vor!
Das ist für das Formular selber irrelevant.

Nun zu der Datei member1.inc:

PHP:
<?php
$_SESSION['Vorname'] = $_POST['Vorname'];
$_SESSION['Nachname'] = $_POST['Nachname'];
$_SESSION['EMail'] = $_POST['EMail'];
$_SESSION['ICQ'] = $_POST['ICQ'];
$_SESSION['PLZ'] = $_POST['PLZ'];
$_SESSION['Ort'] = $_POST['Ort'];
$_SESSION['Land'] = $_POST['Land'];
$_SESSION['CLAN'] = $_POST['CLAN'];

if(trim($_SESSION['Vorname'])=="")
{
$err_text.="<center>Please fill the field Vorname.<br></center>";
} else if (strlen($_SESSION['Vorname']) < 4)
{
$err_text.="<center>Too short Vorname.<br></center>";
}

if(trim($_SESSION['Nachname'])=="")
{
$err_text.="<center>Please fill the field Nachname.<br></center>";
} else if (strlen($_SESSION['Nachname']) < 4)
{
$err_text.="<center>Too short Nachname.<br></center>";
}

if(trim($_SESSION['EMail'])=="")
{
  $err_text.="<center>Please fill the field E-Mail.<br></center>";
}
else
{
  if(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$",$_SESSION['EMail']))
{
    $err_text.="<center>Incorrect E-Mail.<br></center>";
}
}

if((trim($_SESSION['ICQ'])!="") && (preg_match('/\D/' , $_SESSION['ICQ'])))
{
  $err_text.="<center>Incorrect ICQ.<br></center>";
}

if(trim($_SESSION['PLZ'])=="")
{
 $err_text.="<center>Please fill the field PLZ.<br></center>";
} else if (strlen($_SESSION['PLZ']) < 4)
{
 $err_text.="<center>Too short PLZ.<br></center>";
} else if(preg_match('/\D/' , $_SESSION['PLZ']))
{
 $err_text.="<center>Incorrect PLZ.<br></center>";
}
  

if(trim($_SESSION['Ort'])=="")
{
$err_text.="<center>Please fill the field Ort.<br></center>";
} else if (strlen($_SESSION['Ort']) < 4)
{
 $err_text.="<center>Too short Ort.<br></center>";
}

if(trim($_SESSION['Land']) == "0")
{
$err_text.="<center>Please select a country.<br></center>";
}

if(trim($_SESSION['CLAN']) == "-1")
{
$err_text.="<center>Please select a CLAN.<br></center>";
}

if(($_POST['send'] == "1") && (isset($err_text))) {
  echo "<center><p><big><b>Error:</b></big><br></center>";
  echo "$err_text</p>";
}

?>
<form name="eintragen" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table border=0 align="center" width="50%">
<tr>
<td width="20%">
Vorname*:
</td>
<td>
<input name="Vorname" type="text" size="30" maxlength="30" value="<?php echo $_SESSION['Vorname']; ?>" onChange="pruefung()">
</td>
<td width="30%">
<span id="Teil1a">&nbsp;</span>&nbsp;<strong><span id="fehler1a">&nbsp;</span></strong>
</td>
</tr>
<tr>
<td width="20%">
Nachname*:
</td>
<td>
<input name="Nachname" type="text" size="30" maxlength="30" value="<?php echo $_SESSION['Nachname']; ?>" onChange="pruefung()">
</td>
<td width="30%">
<span id="Teil1b">&nbsp;</span>&nbsp;<strong><span id="fehler1b">&nbsp;</span></strong>
</td>
</tr>
<tr>
<td width="20%">
E-Mail*:
</td>
<td>
<input name="EMail" type="text" size="30" maxlength="30" value="<?php echo $_SESSION['EMail']; ?>" onChange="pruefung()">
</td>
<td width="30%">
<span id="Teil2">&nbsp;</span>&nbsp;<strong><span id="fehler2">&nbsp;</span></strong>
</td>
</tr>
<tr>
<td width="20%">
ICQ:
</td>
<td>
<input name="ICQ" type="text" size="30" maxlength="30" value="<?php echo $_SESSION['ICQ']; ?>" onChange="pruefung()">
</td>
<td width="30%">
<span id="Teil3">&nbsp;</span>&nbsp;<strong><span id="fehler3">&nbsp;</span></strong>
</td>
</tr>
<tr>
<td width="20%">
Straße:
</td>
<td>
<input name="Strasse" type="text" size="30" maxlength="30" value="<?php echo $_SESSION['Strasse']; ?>" onChange="pruefung()">
</td>
<td width="30%">
<span id="Teil4">&nbsp;</span>&nbsp;<strong><span id="fehler4">&nbsp;</span></strong>
</td>
</tr>
<tr>
<td width="20%">
PLZ*:
</td>
<td>
<input name="PLZ" type="text" size="30" maxlength="6" value="<?php echo $_SESSION['PLZ']; ?>" onChange="pruefung()">
</td>
<td width="30%">
<span id="Teil5">&nbsp;</span>&nbsp;<strong><span id="fehler5">&nbsp;</span></strong>
</td>
</tr>
<tr>
<td width="20%">
Ort*:
</td>
<td>
<input name="Ort" type="text" size="30" maxlength="30" value="<?php echo $_SESSION['Ort']; ?>" onChange="pruefung()">
</td>
<td width="30%">
<span id="Teil6">&nbsp;</span>&nbsp;<strong><span id="fehler6">&nbsp;</span></strong>
</td>
</tr>
<tr>
<td width="20%">
Land*:
</td>
<td>
<select name="Land" onChange="pruefung()">
<option value="0"<?php if ($_SESSION['Land'] == "0") { echo "selected"; } ?>>&nbsp;&nbsp;-&nbsp;Ihre Auswahl&nbsp;-&nbsp;&nbsp;</option>

<option value="Germany"<?php if ($_SESSION['Land'] == "Germany") { echo "selected"; }?>>Deutschland</option>
</select>
</td>
<td width="30%">
<span id="Teil7">&nbsp;</span>
</td>
</tr>
<tr>
<td colspan="2">
<span id="Link">&nbsp;</span>
</td>
<td>
<span id="Teil8">&nbsp;</span>&nbsp;<strong><span id="fehler8">&nbsp;</span></strong>
</td>
</tr>
<tr>
<td>&nbsp;
</td>
</tr>
<tr>
<td width="20%">
CLAN-Mitglied/-Leader*:
</td>
<td>
<select name="CLAN" onChange="pruefung()">
<option value="-1"<?php if ($_SESSION['CLAN'] == "-1") { echo "selected"; } ?>>&nbsp;&nbsp;-&nbsp;Ihre Auswahl&nbsp;-&nbsp;&nbsp;</option>

<option value="1"<?php if ($_SESSION['CLAN'] == "1") { echo "selected"; }?>>Ja</option>
<option value="0"<?php if ($_SESSION['CLAN'] == "0") { echo "selected"; }?>>Nein</option>
</select>
</td>
<td width="30%">
<span id="Teil9">&nbsp;</span>
</td>
</tr>
</table>
<center>
<input name="weiter" type="Submit" value="Weiter">
<input name="send" type="hidden" value="1">
<input name="admineingriff" type="hidden" id="admineingriff">
<input name="admineingriff2" type="hidden" id="admineingriff2">
<br>
<br>
* Diese Angaben sind Pflichtangaben!<br><br>
Infos zu den Angaben:<br>
Hier klicken <!-- hier kommt der Link zur Hilfe -->
</center>
</form>

Die Datei member2.inc sieht ähnlich aus:

PHP:
<?php
$_SESSION['CLAN-Name'] = $_POST['CLAN-Name']; //CLAN-Name
$_SESSION['CLAN-Member'] = $_POST['CLAN-Member']; //CLAN-Mitglieder
$_SESSION['CLAN-HP'] = $_POST['CLAN-HP']; //CLAN-HP
$_SESSION['CLAN-Pos'] = $_POST['CLAN-Pos']; //CLAN Position
$_SESSION['CLAN-JPW'] = $_POST['CLAN-JPW']; //CLAN Join Passwort
$_SESSION['CLAN-JPW2'] = $_POST['CLAN-JPW2']; //CLAN Join Passwort2

$_SESSION['CLAN-Suche'] = $_POST['CLAN-Suche']; //Auf CLAN Suche

echo $_SESSION['CLAN'];

if ($_SESSION['CLAN'] == "1")
{
	if(trim($_SESSION['CLAN-Name']) == "")
	{
	$err_text.="<center>Please define your CLAN-Name.<br></center>";
	}
	if(trim($_SESSION['CLAN-Member'])=="")
	{
	$err_text.="<center>Please fill the field Number of CLAN-Member.<br></center>";
	}
	else
	{
		if(!ereg("^([0-9]+)$",$_SESSION['CLAN-Member']))
		{
		$err_text.="<center>Incorrect Number of CLAN-Member.<br></center>";
		}                          
	}
	if(trim($_SESSION['CLAN-HP'])=="")
	{
	$err_text.="<center>Please fill the field CLAN-HP.<br></center>";
	}
	else
	{
		if(!ereg("^[http://www.]+[_a-z0-9-]*(\.[a-z]{2,6})$",$_SESSION['CLAN-HP']))
		{
		$err_text.="<center>Incorrect CLAN-HP.<br></center>";
		}                             
	}
	if(trim($_SESSION['CLAN-Pos']) == "-1")
	{
	$err_text.="<center>Please select your CLAN-Position.<br></center>";
	}
	if(trim($_SESSION['CLAN-JPW']) == "")
	{
	$err_text.="<center>Please define your CLAN-Join-Password.<br></center>";
	}
	if(trim($_SESSION['CLAN-JPW2']) == "")
	{
	$err_text.="<center>Please repeat your CLAN-Join-Password.<br></center>";
	}
	if(trim($_SESSION['CLAN-JPW']) == trim($_SESSION['CLAN-JPW2']))
	{
	$err_text.="<center>The CLAN-Join-Passwords are incorrect.<br></center>";
	}
} else
{
	if(trim($_SESSION['CLAN-Suche']) == "-1")
	{
	$err_text.="<center>Please select your CLAN-Position.<br></center>";
	}
}

if(($_POST['send'] == "2") && (isset($err_text))) {
  echo "<center><p><big><b>Error:</b></big><br></center>";
  echo "$err_text</p>";
}

?>
...

So das sollte einen Einblick in die Quelltexte und meine Struktur bringen.
Zur Unterscheidung benutze ich ja auch
Code:
<input type="hidden" name="send" value="[Zahl]">
.
Ich weiß aber nicht, ob das sinnvoll ist!

Deswegen poste ich hier.
Kann mir jemand helfen?
 
Sorry wo liegt dein Problem

das mit den *.inc macht man nicht und deine Dateien werden nicht auf z.b xss gecheckt.

mfg
the_condor
 
Er überprüft nicht im Schritt 2 die Eingaben!
Sprich er gibt keinen Fehler aus.
Und ich weiß dann auch nicht was ich in der member.php schreiben muss, um mit $_POST['send'] drei Schritte zu unterscheiden.

Mit dem *.inc habe ich gemacht, da so keiner die Datei selber öffnen kann, da kein Mime-Typ festgelegt worden ist.
Was ist denn xss?
 
Guten Morgen :)

.... was ich in der member.php schreiben muss, um mit $_POST['send'] drei Schritte zu unterscheiden. ...

Führ doch einfach in jedem der x Formulare noch eine ID mit, was dir hilft die Schritte auseinander zu halten.

Im 1. Formular gibt es dann zum Beispiel
Code:
<input type=hidden value=step1 />
was du dann im Skript entprechend abfragen kannst.

Das Problem ist, das du natürlich die in den einzelnen Schritten erfassten Daten mitführen bzw. dir merken mußt:

Möglichkeit 1: Du schreibst die Daten tenporär in eine Datei (Server)
Möglichkeit 2: Du schreibst die Daten gleich in eine DB (wo sie wahrscheinlich eh landen werden ;) ) (Server)
Möglichkeit 3: Du führst die Daten in den Formularen mit (Client)
Möglichkeit 4: Du setzt ein Cookie mit allen bisher eingebenen Daten (Client)
 
Last edited by a moderator:
Oder man nutzt einfach die PHP-Session. Cookies mit plain-text Userdaten mag ich gar net auf meinem Rechner!
 
Back
Top