2013-04-28 82 views
1

我仍然是php的初學者,並且遇到邏輯運算符& &有點問題。我有一個令牌和祕密答案腳本,都是文本框。當用戶提交令牌並回答時,腳本進入數據庫,並且如果所有檢查都清除(錯誤消息等),則進入下一步(輸入新密碼)。實際的腳本在我的生活網站上工作正常,但由於某種原因,它在我的計算機上本地工作不正常(說實話,我有點偏執,以防萬一安全)。隨着大量測試腳本指向此位的代碼:邏輯運算符(&&)在本地不在php中工作

if(isset($uid) && isset($uidTwo)) { 
      header('Location: reset.php'); 
      exit(); 
     } 

的$ UID存儲從用戶數據庫users_id和$ uidTwo存儲從答案數據庫tables_id(其中也有user_id說明作爲一個其主要欄目)。當兩者都匹配(True)時,腳本進入重置頁面。

我已經做了很多測試,將& &更改爲||。似乎工作和處理到下一頁,但這種方式只適用於令牌框,你可以在答案框中鍵入任何內容,例如(ftgyhh),所以這沒有用。

我已經檢查頭已經發送等,因爲我有錯誤消息,但似乎沒有任何工作的腳本本地。

那麼,有沒有人有任何想法,我可以錯過?

編輯:$ uidTwo var_dump發現它是NULL,然後我意識到它可能是數據庫端,所以我導入數據庫的早期版本,發現它是。該腳本現在在本地工作,但在讀取兩個數據庫sql文件之前和之後,我看不到我做錯了什麼。哦,這些東西在那裏試試我們。乾杯傢伙爲您提供所有幫助

+2

你可以顯示設置'$ uid'和'$ uidTwo'的代碼嗎? – Ryan 2013-04-28 17:19:36

+0

是$ uid的代碼是:list($ uid)= mysql_fetch_array($ result);和$ uidTwo相同 – bluefiredragon 2013-04-28 17:24:50

+0

只是一個提示:isset可以檢查多個變量,因此不需要邏輯運算符。請參閱PHP手冊[isset()](http://php.net/manual/de/function.isset.php) – SirDerpington 2013-04-28 17:27:27

回答

3

這裏沒有足夠的信息來回答。僅供參考,你可以這樣做:

if (isset($uid, $uidTwo)) { 
    header('Location: reset.php'); 
    exit(); 
} 

而不是使用& &。

我會做頭之前類似

echo $uid ? "Uid is set" : "Uid is not set"; 
echo $uidTwo ? "Uid2 is set" : "Uid2 is not set"; 

,並開始,直到他們都沒有什麼,我想他們應該是工作我的方式回來。

+0

這比&&效果更好。爲隊友喝彩 – bluefiredragon 2013-04-28 19:10:45

0

isset()檢查是否存在變量。你可能想使用empty(),看是否有變量包含的值,如:

if(empty($uid) && empty($uidTwo)) { 
     header('Location: reset.php'); 
     exit(); 
}