2012-12-28 51 views
9

Tôi muốn đặt cả biểu mẫu đăng ký và đăng nhập trên cùng một trang.
Cả hai đều bắt đầu với:Làm cách nào để đặt hai biểu mẫu trên cùng một trang?

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

vậy, tôi cần một cái gì đó như:

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

Cũng như thế nào để ngăn chặn thực hiện hình thức đầu tiên nếu thứ hai là bận rộn, và ngược lại (người dùng nhấp chuột vào cả hai)
ý tưởng của tôi là tạo ra một biến đơn giản trên quá trình khởi động, ví dụ $x = 1 và ở phần cuối của quá trình $x = 0, vì vậy:

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

Có lẽ, có một cách tốt hơn.

+1

Vì vậy, câu hỏi của bạn không phải là làm thế nào để đưa hai yếu tố hình thức HTML trên cùng một trang, nhưng làm thế nào để xử lý yêu cầu bắt nguồn từ việc gửi các biểu mẫu khác nhau với cùng một tảo PHP, phải không? – ppeterka

+0

@ppeterka, vâng, đúng vậy. – Alegro

Trả lời

27

Bạn có thể thực hiện hai hình thức với 2 hành động khác nhau

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

Hoặc làm điều này

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

tập tin Sau đó, bạn PHP sẽ làm việc như một switch ($ _ POST [ 'action']) ... hơn nữa, họ không thể nhấp vào cả hai liên kết cùng một lúc hoặc đưa ra yêu cầu đồng thời, mỗi yêu cầu gửi là một yêu cầu riêng biệt.

PHP của bạn sau đó sẽ tiếp tục với logic chuyển đổi hoặc có file php khác nhau thực hiện một thủ tục đăng nhập sau đó một thủ tục đăng ký

+0

Mô tả tốt hơn một chút về lý do tại sao anh ấy cần làm như vậy sẽ tốt, nhưng nếu không +1 – ppeterka

+0

cristi_b, tôi có ý tưởng biết. Cảm ơn. Tôi nghĩ - đã giải quyết. Lý do BTW là - thiết kế nhất quán. – Alegro

+0

bạn có thể triển khai phiên bản của tôi hoặc những gì Neal đề xuất, một biểu mẫu có 2 nút gửi (đăng ký và đăng nhập) –

6

Bạn cũng có thể có từng biểu mẫu truy cập trang khác nhau. (Đó là một lợi)

Hoặc có một giá trị khác nhau cho một đầu vào và cơ sở nhất định bài viết trên rằng:

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

yeah, cùng một trang, các nút gửi khác nhau với các giá trị khác nhau trên cùng một mẫu ... tốt hơn một chút so với giải pháp của tôi –

+0

tôi nhận thấy ở đây, khi một câu trả lời xuất hiện trên màn hình, nó đã đến '-1' votted !!? – Alegro

1

Hy vọng điều này sẽ giúp bạn. Giả sử rằng biểu mẫu đăng nhập có: đầu vào tên người dùng và mật khẩu.

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

Bạn biết điều gì xảy ra khi bạn giả định, đúng không? – Neal

+0

Và nếu biểu mẫu đăng ký không có trường tên người dùng và mật khẩu thì sao? Tôi nghĩ rằng một hình thức đăng ký _does_ thường có những người ... – ppeterka

+0

@ peterka, có, cả hai hình thức có tên người dùng và các lĩnh vực pass – Alegro

3

Cho các nút nộp cho cả hai hình thức tên gọi khác nhau và sử dụng PHP để kiểm tra nút đó đã đệ trình dữ liệu .

Mẫu một nút - btn1 Mẫu hai nút -btn2

PHP Code:

if($_POST['btn1']){ 
    //Login 
}elseif($_POST['btn2']){ 
    //Register 
} 
Các vấn đề liên quan