2013-09-23 4 views
1

Я сделал регистрационную форму, у меня было много других проблем с ней, и теперь я узнал, что код PHP был выполнен доотправить. КАК может быть решена проблема? Поскольку PHP не поддерживает события onclick (которые в любом случае отстой!), Я не вижу никакого решения, которое я знаю!PHP-код выполняется перед отправкой

Код:

//Get the form with POST 
$user = mysql_real_escape_string($_POST['user']); 
$password = mysql_real_escape_string($_POST['pass']); 



$usernames=mysql_query("SELECT * FROM user_info WHERE Username='" . $_POST['user'] . "' AND Password='" . $_POST['pass'] . "'"); 
if(!$usernames){echo mysql_error();} 

$count=mysql_num_rows($usernames); 
if(!$count){echo mysql_error();} 

//If $count is equal to one, register the user and redirect him to his page, or else echo him that his info is wrong 
if($count === 1) { 
$_SESSION['code'] = "titan"; 
$_SESSION['ande'] = $user; 
$_SESSION['password'] = $password; 
header("location: home.php");} 
else { 
echo "<p style='color:red;text-align:center;'>Wrong username or password!</p>";} 
+3

PHP не позволяет выполнять функции? Я делал это неправильно все эти годы! –

+0

'Так как PHP не позволяет функции' - на самом деле? – andrewsi

+0

PHP позволяет выполнять функции. – Wing

ответ

4

Wrap код, который должен быть выполнен после отправки формы в операторе IF, который проверяет, чтобы увидеть, если форма будет отправлена:

if ('POST' === $_SERVER['REQUEST_METHOD']) 
{ 
    // your code goes here 
} 
+0

Ничего не меняется ... –

3

Проверьте, если форма представляется

if(isset($_POST['user'])) { 

    //Your php code goes here 

} 

Основываясь на ваш комментарий я продлил этот ответ

Просто поместите весь код в этом состоянии, которое вы послали ваш вопрос

if(isset($_POST['user'])) 
{ 

    //Get the form with POST 
    $user = mysql_real_escape_string($_POST['user']); 
    $password = mysql_real_escape_string($_POST['pass']); 



    $usernames=mysql_query("SELECT * FROM user_info WHERE Username='" . $_POST['user'] . "' AND Password='" . $_POST['pass'] . "'"); 
    if(!$usernames){echo mysql_error();} 

    $count=mysql_num_rows($usernames); 
    if(!$count){echo mysql_error();} 

    //If $count is equal to one, register the user and redirect him to his page, or else echo him that his info is wrong 
    if($count === 1) { 
    $_SESSION['code'] = "titan"; 
    $_SESSION['ande'] = $user; 
    $_SESSION['password'] = $password; 
    header("location: home.php");} 
    else { 
    echo "<p style='color:red;text-align:center;'>Wrong username or password!</p>";} 

} 
+0

Это не сработало! Возможно, я делаю это неправильно: должен ли я поместить этот код как новый? или я должен заменить старое условие на это? –

+0

Вы получите представление, см. скрипт страницы 'login.php' из этого ответа http://stackoverflow.com/a/18979508/2459296 – Salim

0

Что я НЕ сказать вам, что код PHP был в том же файле с формой и остальной частью HTML ... Я попытался переделать код в AJAX (он не работал = (, но он все еще помог!), и для этого я переместил PHP-код в другой файл (Login_engine.php). И это все! Уверен, все еще есть крошечная проблема: теперь красный текст отображается внутри Login_engine.php ... Это отстой!

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