если (() и ()) не работает - PullRequest
       2

если (() и ()) не работает

0 голосов
/ 28 февраля 2011

Следующий фрагмент скрипта, похоже, не работает, и я не знаю почему:

// go to correct.php only if length between 8 and 11

$get_length = strlen( $_POST["phone"] );

if( ( $get_length >= 8 ) and ( $get_length <= 11 ) ) {
    header("Location: correct.php");
} else {
    header("Location: incorrect.php");
}

Даже если длина равна 6, она отправляется в correct.php.

Ответы [ 6 ]

3 голосов
/ 28 февраля 2011

Это такой вопрос, на который может ответить только программист.
Фактически, большинство вопросов, с которыми приходится иметь дело программисту, относятся к этому типу.
Техника, позволяющая получить ответ, называется debugging
Основная цель отладки - получить как можно больше информации - все возможные сообщения об ошибках и - самая важная часть - фактические значения переменных. .
Наблюдая за вашим кодом, вы не имеете представления о реальных значениях. Но запустив его и напечатав значения, вы можете увидеть, что происходит, и угадать причины или задать правильный вопрос по stackoverflow.

Создайте свой код таким образом и опубликуйте здесь результат:

ini_set('display_errors',1);
error_reporting(E_ALL);
echo "<pre>";

$get_length = strlen( $_POST["phone"] );

var_dump( $_POST["phone"],$get_length);

if( ( $get_length >= 8 ) and ( $get_length <= 11 ) ) {
    echo ("Location: correct.php");
} else {
    echo ("Location: incorrect.php");
}
exit;
3 голосов
/ 28 февраля 2011

Нет, *AND*, *and* и *&&* одинаковы *.Вы должны отладить переменную:

var_dump($get_length);

или, может быть, даже лучше:

var_dump($_POST);

* = в этом случаеЧек http://www.php.net/manual/en/language.operators.precedence.php

1 голос
/ 28 февраля 2011

Кажется, ваш $_POST["phone"] не установлен.

Отладьте ваш скрипт следующим образом:

  1. Проверьте, содержит ли <form> элемент с name="phone"

<input type="text" name="phone">

  1. Проверьте действие формы и метод тоже, он должен указывать на файл, в котором находится ваш код, чтобы проверить длину. Форма метода должна быть post.

  2. Проверьте, установлен ли $_POST['phone'] на var_dump($_POST)

После выполнения вышеуказанного шага отладки вы поймете, в чем проблема.

Ваше Если условие хорошо, и не имеет проблем.

Спасибо

1 голос
/ 28 февраля 2011

Ваш код работает правильно.

Пожалуйста, проверьте данные в $ _POST.

Это то же самое, что вы говорите?

используйте echo $ _POST ['phone'], чтобы проверить реальное значение перемешивания и посчитать длину.

0 голосов
/ 28 февраля 2011

Возможно, вам следует попробовать использовать «&&» вместо «и».

http://www.w3schools.com/PHP/php_operators.asp

0 голосов
/ 28 февраля 2011

попробовать?:

if( ( $get_length >= 8 ) && ( $get_length <= 11 ) ) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...