2014-01-27 2 views
0

В моем HTML у меня есть форма, в которой пользователи могут зарегистрироваться или войти. Проблема заключается в том, что кнопки регистрации и входа находятся в одной форме, и они обрабатываются двумя скриптами: register. php и login.php.Форма должна обрабатывать две кнопки отправки в PHP

В

<form action=" "> 

там может быть просто один имя сценария. Итак, как сделать форму способной обрабатывать две кнопки отправки (два скрипта)?

<form action="register.php" method="post" class="login_form">  

    <div class="login_form_input_container"> 
     <label for="email" class="login_form_label">Email</label> 
     <input type="email" id="email" name="email" class="login_form_input"> 
    </div> 

    <div class="login_form_input_container"> 
     <label for="password" class="login_form_label">Password</label> 
     <input type="password" id="password" name="password" class="login_form_input"> 
    </div> 

    <a href="forgot_password/" class="forgot_password_link">Forgot password?</a> 

    <input type="submit" id="login_submit" name="login_submit" value="Log In" class="login_form_submit"> 

    <input type="submit" id="register_submit" name="register_submit" value="Register" class="login_form_submit"> 

    </form> 
+1

'if (isset ($ _ POST ['btn_name']))' –

+0

Зачем вам нужен один скрипт для обработки обоих? – Blender

+0

@Blender Нет, он хочет форму, которая может подчиняться различным скриптам. – TwilightSun

ответ

2

Создайте другой сценарий register_or_login.php, пусть этот сценарий обработки формы представления и сделать его маршрут либо входа в систему или зарегистрироваться бэкэнд скрипт:

if (isset($_POST['login_submit'])) { 
    require 'login.php'; 
} elseif (isset($_POST['register_submit'])) { 
    require 'register.php'; 
} 

кнопка не сильно отличается от, скажем, флажок или текстовое поле; если вы дадите ему имя, оно будет присутствовать в $_POST.

+0

Джек, я понял. В своем коде я могу просто использовать Header (Location: login.php) для перенаправления пользователя вместо использования require ('login.php')? Что лучше? – user3205002

+1

@ user3205002 Данные POST не сохраняются при перенаправлении заголовка. –

+0

Джек, я вижу, если используется перенаправление header(), то данные $ _POST не могут быть переданы между сценариями, если не используются другие методы передачи данных, такие как SESSION. Правильно ли я понимаю? – user3205002

0

вы можете просто проверить с isset который один был послан/щелкнул как так

if(isset($_POST['login_submit'])){ 
    //do login 
}elseif(isset($_POST['register_submit'])){ 
    //do register 
} 

Я просто думал об этом, и проверить, что если пользователь просто хиты войти без нажатия на кнопку отправки, он посылает имя первого представить/значение по умолчанию. Так что в вашем случае login_submit будет отправлен, если пользователь просто попадает в enter, что, вероятно, хорошо.

+0

Тогда как мне закодировать в атрибуте action = ""? – user3205002

+0

выполните действие везде, где ваш php-скрипт – Class

Смежные вопросы