2016-09-30 2 views
1

Я хочу, чтобы моя форма перенаправлялась на index2.html без вставки значений или выполнения функции случая, если электронная почта уже существует в базе данных. Я пробовал несколько вариантов без успеха. Вот мой function.phpЕсли значение существует от главы до местоположения

<?php 

require 'database.php'; 

$title = $_POST['Title']; 
$fullname = $_POST['fullname']; 
$email = $_POST['email']; 
$gender = $_POST['gender']; 

$sql = "SELECT email FROM tbl_users WHERE email = $email"; 
$result = dbQuery($sql); 
if (dbNumRows($result) == 1) { 
    header ('Location: index2.php'); 
} 

$sql = "INSERT INTO tbl_users (Title, fullname, email, gender) 
     VALUES ('$title', '$fullname', '$email', '$gender')"; 
dbQuery($sql); 

switch ($_POST['gender']) 
{ 
    case 'male': 
     header('Location: male.php'); 
     break; 
    case 'female': 
     include 'female.php'; 
     break; 
    } 
?> 

В то время как моя форма

<form action="function.php" method="post 
    <input name="Title" placeholder="Title" type="text"> 
    <input name="fullname" placeholder="fullname" type="text"> 
    <input name="email" placeholder="email" type="text"> 
    <select name="gender"> 
     <option selected="selected" value="-">Please select your bank</option> 
     <option value="male">Male</option> 
     <option value="female">Female</option> 
    </select> 
</form> 
+0

У вас возникла ошибка? – rbr94

+0

'exit();' после изменения вашего местоположения – Aziz

ответ

2

поставить вставки запроса в другое Пример -

if (dbNumRows($result) == 1) { 
     header ('Location: index2.php'); 
    }else { 

    $sql = "INSERT INTO tbl_users (Title, fullname, email, gender) 
      VALUES ('$title', '$fullname', '$email', '$gender')"; 
    dbQuery($sql); 
    } 
2

После редиректа, что вам нужно выйти из PHP, или это чтение и выполнение остальной части вашего кода. Так просто это должно решить проблему:

header('Location: index2.php'); 
die(); 
+0

Зачем использовать 'die()', а не 'exit'? 'die()' является функцией отчетности об ошибках и, возможно, создает запись в вашем журнале ошибок. – syck

+1

die() и exit() эквивалентны, так что все нормально. –

+0

Хорошо. Есть несколько языков, где это не так, поэтому я предпочитаю (и рекомендую) использовать 'die' только в случае сбоя и' exit' при успехе. – syck

3

Если это действительно часть вашего кода

WHERE email = $email"; 

Вашего код/​​заголовок неудовлетворительный, потому что он был не котируется:

WHERE email = '$email'"; 

поскольку $email - это строка, а не целое число.

Вы также должны добавить exit; после каждый заголовок, в противном случае ваш код захочет продолжить выполнение.

Ссылка:

Вы открыты для инъекции SQL; используйте подготовленное заявление.

Ссылки:

Plus, если <form action="function.php" method="post это (опять же) часть вашего реального кода, она отсутствует как цитата " и закрытие > для него.

<form action="function.php" method="post"> 

Сноска:

API-интерфейс, используемый для подключения/запрос с неизвестна, поэтому проверьте наличие ошибок в запросе и через PHP с отчетом об ошибках.

Вы также должны проверить наличие пустых полей. В противном случае вы можете получить неожиданные результаты/сюрпризы.


"Я хочу, чтобы моя форма для перенаправления index2.html"

и вы используете (с .php)

header ('Location: index2.php'); 

Возможно, вы сделали опечатку с одним из них. Если нет, используйте расширение .html, если это то, о чем вы просите.

+0

Я просто набрал код для простоты. Они не повреждены в фактическом коде. –

+0

@JaphetSmith Когда люди отправляют код, я воспринимаю его буквально, так как это может быть (частью) реальной проблемы, поэтому я не беру никаких шансов ;-), и это для будущих посетителей вопроса/ответа (ответов). –

+0

@JaphetSmith что-то я не понимаю, потому что вы делаете заголовок на 'case 'male': header ('Location: male.php');' but include для 'case 'female': включая 'female.php'; '. Повторите мой ответ и проверьте наличие ошибок. Я ничего не могу добавить к этому. –