различные способы реализации if / else if / else, чего мне не хватает - PullRequest
0 голосов
/ 13 октября 2011

Так что моя проблема (помимо того, что я нуб) в том, что во время обучения я пытаюсь проверить пару вещей на true / false и независимо от того, как я устанавливаю свой код, если встречается один параметр, он идет через true, хотя второй параметр - false.

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

вот что происходит:

HTML / псевдо:

<html and other header tags>
<form method="post" action="procfile.php">
  <table>
    <tr>
        <td>Username:</td>
        <td><input type="text" name="user" id="user"></td>
    </tr>
    <tr>
        <td>password:</td>
        <td><input type="text" name="password" id="password"></td>
    </tr>
        <tr>
        <td></td>
        <td><input type="submit" value="submit"></td>

    </tr>
</table>

</form>
</html>

что касается php, я сначала проверяю на пустоту, изначально у меня это было так:

<?php
if((empty($_POST['user']))&&(empty($_POST['password']))){
    header("Location:index.php"); /* Redirect browser */

exit;
}

?>

это не работает. я не получаю синтаксические ошибки или что-то еще ... так, через некоторое время я перешел на более длинную версию, так что сверху он перешел к этому.

<?php

if(empty($_POST['user'])){
    header("Location:index.php"); /* Redirect browser */


exit;
}  else if((empty($_POST['password']))){
    header("Location:index.php"); /* Redirect browser */


exit;
} 

?>

это тоже не работает. я вынул оператор if if if и сделал кучу операторов if вместе один поверх другого, чтобы в случае сбоя перенаправить, если он прошел, перейти к следующему оператору if ...

это тоже не сработало.

Общая проблема, с которой я сталкиваюсь (я чувствую себя глупым!), Заключается в том, что на всех них условие first равно встретил , он пропускает оставшуюся часть php под ним и идет вперед, чтобы загрузить HTML. случается только на первом. Например, если я ввожу только пароль, это возвращает меня к индексу. если я сначала ввожу имя пользователя, а не пароль ... это позволяет мне через ДАЖЕ, хотя есть другие операторы if со своими собственными правилами. я поместил php поверх всего, чтобы УБЕДИТЬСЯ, что это происходит b4 что-нибудь отправлялось, но безрезультатно.

идеи? что я делаю не так с этими условиями?

Забавно, когда я проверяю значение POST по сравнению со значением результата в дБ (из другого скрипта, над которым я сейчас работаю), например:

if((!empty($user)) && (!empty($pass))) {
    //connect to db
    $connect2db = mysqli_connect('127.0.0.1', 'root', 'pass', 'db');
        if(!$connect2db){
            die("error connectin to Database" . mysqli_error);
        }

    $dbq = "SELECT * FROM accounts;";
    $dbqDoIt = mysqli_query($connect2db, $dbq)or die("error".mysqli_error($connect2db));

    $getNames = mysqli_fetch_array($dbqDoIt);
        //check if user acc. exists inside vS database.
        if(($name === $getNames['username']) && ($pass === $getNames['password'])){
//do something

}

когда я проверяю, как это, с не пустым, оно остается на месте, пока оба условия не выполнены ... когда я проверяю на пустое (я пробовал с! Isset тоже) в приведенном выше примере, это терпит неудачу меня с треском ....

что я делаю не так? пожалуйста, помогите.

заранее благодарю.

1 Ответ

1 голос
/ 13 октября 2011

Вам нужно ИЛИ здесь.

if(!$_POST['user'] || !$_POST['password']){
    header("Location: index.php"); /* Redirect browser */
    exit;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...