2012-12-28 8 views
9

Ich möchte sowohl Anmelde- als auch Anmeldeformular auf der gleichen Seite platzieren.
Beide beginnen mit:Wie platziere ich zwei Formulare auf der gleichen Seite?

if (!empty($_POST)) ... 

so, ich brauche so etwas wie:

if (!empty($_POST_01))... // regForm 
    and 
if (!empty($_POST_02))... //loginForm 

Auch wie erste Form der Ausführung zu verhindern, wenn der zweite beschäftigt ist, und umgekehrt (Benutzer klickt auf beide)
Meine Idee ist es, eine einfache Variable auf Startvorgang zu schaffen, zum Beispiel $x = 1 und am Ende des Prozesses $x = 0, so:

if ((!empty($_POST_01)) And $x = 0)... 

Wahrscheinlich gibt es einen besseren Weg.

+1

So Ihre Frage ist nicht, wie zwei Elemente HTML-Formular auf der gleichen Seite zu setzen, aber wie das verarbeiten Anfragen, die von der Einreichung verschiedener Formulare mit demselben PHP-Pgae stammen, nicht wahr? – ppeterka

+0

@pepperka, ja, das ist es. – Alegro

Antwort

27

Sie zwei Formen mit 2 verschiedenen Aktionen machen könnte

<form action="login.php" method="post"> 
    <input type="text" name="user"> 
    <input type="password" name="password"> 
    <input type="submit" value="Login"> 
</form> 

<br /> 

<form action="register.php" method="post"> 
    <input type="text" name="user"> 
    <input type="password" name="password"> 
    <input type="submit" value="Register"> 
</form> 

Oder diese

<form action="doStuff.php" method="post"> 
    <input type="text" name="user"> 
    <input type="password" name="password"> 
    <input type="hidden" name="action" value="login"> 
    <input type="submit" value="Login"> 
</form> 

<br /> 

<form action="doStuff.php" method="post"> 
    <input type="text" name="user"> 
    <input type="password" name="password"> 
    <input type="hidden" name="action" value="register"> 
    <input type="submit" value="Register"> 
</form> 

Dann PHP Datei, die Sie würde als Schalter ($ _ POST [ 'action'] arbeiten) ... außerdem können sie nicht auf beide Links gleichzeitig klicken oder eine gleichzeitige Anfrage stellen, jede ist eine separate Anfrage.

Ihre PHP dann mit der Schaltlogik weitergehen würde oder haben unterschiedliche PHP-Dateien eine Login-Prozedur dann eine Registrierungsprozedur

+0

Eine etwas bessere Beschreibung, warum er das tun müsste, wäre gut, aber ansonsten +1 – ppeterka

+0

cristi_b, ich habe Ahnung davon. Vielen Dank. Ich denke - gelöst. BTW Gründe ist - konsistentes Design. – Alegro

+0

Sie können meine Version oder was Neal vorgeschlagen, ein Formular mit 2 senden Schaltflächen (registrieren und Login) –

6

Nun können Sie jedes Formular an eine andere Seite gehen. (Was bevorzugt ist)

Oder haben Sie einen anderen Wert für die einem bestimmten Eingang und Basis Beiträge dazu:

switch($_POST['submit']) { 
    case 'login': 
    //... 
    break; 
    case 'register': 
    //... 
    break; 
} 
+0

yeah, gleiche Seite, verschiedene Buttons mit verschiedenen Werten auf dem gleichen Formular ... ein bisschen besser als meine Lösung –

+0

ich bemerkte hier, wenn eine Antwort auf dem Bildschirm erscheint, kommt es schon '-1' votted !!? – Alegro

1

Hope this Ihnen helfen. Angenommen, das Login-Formular enthält: Benutzername und Passwort Eingaben.

if(isset($_POST['username']) && trim($_POST['username']) != "" && isset($_POST['password']) && trim($_POST['password']) != ""){ 
//login 
} else { 
//register 
} 
+0

Sie wissen, was passiert, wenn Sie davon ausgehen, richtig? – Neal

+0

Und was ist, wenn das Registrierungsformular auch Benutzernamen und Passwortfelder enthält? Ich denke, ein Registrierungsformular _does_ normalerweise haben diese ... – ppeterka

+0

@ppeterka, ja, beide Formen haben Benutzernamen und Pass Felder – Alegro

3

die Submit-Buttons für beide Formen unterschiedliche Namen geben zu tun und mit PHP überprüfen, welche Schaltfläche Daten vorgelegt hat .

Formular ein Knopf - btn1 Formular mit zwei Tasten -btn2

PHP-Code:

if($_POST['btn1']){ 
    //Login 
}elseif($_POST['btn2']){ 
    //Register 
} 
Verwandte Themen