2012-12-28 28 views
9

Chcę umieścić zarówno rejestr, jak i formularz logowania na tej samej stronie.
Obaj rozpoczyna się:Jak umieścić dwa formularze na tej samej stronie?

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

tak, muszę coś takiego:

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

także jak zapobiec wykonując pierwszy formularz, jeśli drugi jest zajęty, i vice versa (użytkownik kliknie na obu)
Mój pomysł jest stworzenie prostego zmienną w procesie rozruchu, na przykład $x = 1 i na końcu procesu $x = 0 tak:

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

Prawdopodobnie jest lepszy sposób.

+1

Więc nie chodzi o to, jak umieścić dwa elementy formularza HTML na tej samej stronie, ale w jaki sposób przetwarzać wnioski pochodzące z przesyłania różnych formularzy z tym samym PHP pgae, prawda? – ppeterka

+0

@ppeterka, tak, to wszystko. – Alegro

Odpowiedz

27

Można zrobić dwie formy z 2 różnych działań

<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> 

Albo zrobić

<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> 

Wtedy PHP plik będzie działać jako switch ($ _ POST [ 'akcja']) ... ponadto nie mogą klikać na oba łącza w tym samym czasie lub wysyłać jednocześnie żądania, każde zgłoszenie jest oddzielnym żądaniem.

Twój PHP by następnie udać się z logiką przełącznika lub mają różne pliki php robi procedurę logowania następnie procedurę rejestracyjną

+0

trochę lepiej opisem, dlaczego by musiał zrobić tak byłoby dobrze, ale inaczej +1 – ppeterka

+0

cristi_b, mam pomysł znać. Dzięki. Myślę - rozwiązany. BTW powodów jest - spójny projekt. – Alegro

+0

można wdrożyć moją wersję czy co Neal zaproponował formę z 2 przyciski przesyłania (rejestracji i logowania) –

6

Cóż, możesz ustawić każdy formularz na stronie innej. (Co jest korzystne)

Albo mieć inną wartość dla pewnego wejściowych i bazowych postów na tym:

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

tak, ta sama strona, różne przyciski przesyłania z różnymi wartościami w tej samej formie ... trochę lepiej niż moje rozwiązanie –

+0

zauważyłem tutaj, kiedy odpowiedź pojawia się na ekranie, przychodzi już '-1' votted !!? – Alegro

1

nadzieję, że to pomoże. Zakładamy, że formularz logowania zawiera: nazwę użytkownika i hasło.

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

Wiesz, co się dzieje, gdy zakładasz, prawda? – Neal

+0

A co, jeśli formularz rejestru ma również pola nazwy użytkownika i hasła? Myślę, że formularz rejestracyjny _does_ zwykle ma te ... – ppeterka

+0

@ppeterka, tak, oba formularze mają nazwę użytkownika i pola przechodzą – Alegro

3

Daj przycisków Prześlij do obu form różnymi nazwami i użyć PHP aby sprawdzić, który przycisk został złożony dane .

Formularz jeden przycisk - btn1 Formularz dwa przycisk -btn2

Kod PHP:

if($_POST['btn1']){ 
    //Login 
}elseif($_POST['btn2']){ 
    //Register 
} 
Powiązane problemy