2011-02-28 40 views
-1

下面的腳本片段似乎不工作,我不知道爲什麼:如果(()和())不工作

// 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 。

+1

據我所知,是的。是否有正確的方法來檢查,因爲我肯定地在輸入字段中輸入了6個數字,這個輸入字段有ID電話。 – oshirowanen 2011-02-28 11:16:55

+2

'有ID電話的輸入欄。'什麼?它必須有'name ='phone'' php不識別id – 2011-02-28 11:19:38

+0

對不起,是的,我應該說id而不是名字。 – oshirowanen 2011-02-28 11:23:37

回答

3

不,*AND**and**&&*是一樣的*。你必須調試變量:

var_dump($get_length); 

,或者甚至更好:

var_dump($_POST); 

在這種情況下,* =。檢查http://www.php.net/manual/en/language.operators.precedence.php

+4

他們'我不相信,因爲@Mark在對先前的回答發表評論時指出了我的看法。他們的優先權是不同的:http://www.php.net/manual/en/language.operators.precedence.php雖然,OP的問題並不重要。 – 2011-02-28 11:22:29

+0

我想知道OP是否會告訴我們是什麼原因 – 2011-02-28 11:47:08

-2

嘗試:

if(($get_length >= 8) && ($get_length <= 11)) { 
+2

'和'似乎是一個有效的同義詞:http://php.net/manual/en/language.operators.logical.php – 2011-02-28 11:16:03

+2

@ T.J。 Crowder - &&和AND不是同義詞,因爲它們具有不同的優先級。在這種情況下,優先順序不起作用,因爲兩個測試條件都在括號內;但如果他們沒有被括起來,那麼這會導致不同的行爲 – 2011-02-28 11:19:18

+1

@Mark:謝謝! (我沒什麼太多的PHP頭)。如果有人感興趣,請參考:http://www.php.net/manual/en/language.operators.precedence.php – 2011-02-28 11:21:46

1

你的代碼是否正常工作。

請檢查$ _POST中的數據。

和你說的一樣嗎?

使用echo $ _POST ['phone']來檢查stirng的實際值並計算長度。

+1

PHP如何解釋'和',而不是? ''||? – xtofl 2011-02-28 11:16:22

+0

'和'似乎是一個有效的運算符:http://php.net/manual/en/language.operators.logical.php – 2011-02-28 11:17:22

+0

爲什麼? '和'在PHP中完全有效。 – TRiG 2011-02-28 11:18:04

-1

也許你應該嘗試使用「& &」而不是「和」。

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

+0

更經典的參考建議'和'是有效的:http://php.net/manual/en/language.operators.logical.php(w3schools經常過時和/或不完整,以我的經驗) – 2011-02-28 11:16:44

3

這是一種只能由程序員回答的問題。
事實上,大多數的程序員必須處理的問題,都屬於這種類型。
技術,可以得到答案被稱爲調試
調試的主要目標是獲得儘可能多的信息儘可能 - 所有更多鈔票的錯誤信息,以及 - 最重要的部分 - 變量實際值。
通過觀看你的代碼,你不知道實際值。但是通過運行它並將其打印出來,你可以看到發生了什麼,猜測原因或在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; 
1

好像你$_POST["phone"]未設置。

調試腳本如下:

  1. 檢查是否<form>包含name="phone"

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

  1. 元素檢查表單的動作和方法也應該指向文件放置您的代碼以檢查長度。表單方法應該是post

  2. 檢查它的$_POST['phone']var_dump($_POST)

設置按照上面的步驟調試你會得到其中的問題後。

您的條件是否爲okeay並且沒有任何問題。

謝謝