2011-04-09 111 views
0

我無法重定向計數命中後13重定向當條件滿足

我有圖像的一堆,用戶可以點擊添加到他們的名單在數據庫中,當他們點擊,一點擊js腳本觸發並觸發updatelist.php。

這部分工作正常,在updatelist.php內我需要它插入,然後檢查表,看它是否達到了13的計數,如果是的話,它需要重定向到一個新的頁面。

插入工作正常,但它沒有重定向。下面是我的updatelist.php代碼

<?php 
include('connect.php'); 
session_start(); 
$username=$_SESSION['username']; 

$image = $_GET['image']; 


    $query = mysql_query("SELECT * FROM tbl_movies cross join tbl_users WHERE image_on = '$image' and username = '$username'"); 
    while ($row = mysql_fetch_assoc($query)) 
         { 
          $movieid = $row['id']; 
          $userid = $row['UserID']; 
         } 
    $query2 = mysql_query("select * from tbl_movies cross join tbl_users where image_off = '$image' and username = '$username'"); 
    while ($row2 = mysql_fetch_assoc($query2)) 
           { 
            $mid = $row2['id']; 
            $uid = $row2['UserID']; 
           } 

    $numrows = mysql_num_rows($query); 
    $numrowz = mysql_num_rows($query2); 

     if ($numrows!=0) 
      { 
       $queryInsert = mysql_query("insert into tbl_user_lists (userid_fk,movie_id_fk) values ('$userid','$movieid')"); 

       $query5=mysql_query("select l.* from tbl_user_lists as l join tbl_users on l.userid_fk=tbl_users.UserID where username='$username'"); 
       $updatecount = mysql_num_rows($query5); 
       if ($updatecount == 13) 
        { 
         header('Location: http://localhost/main.php'); 
        } 
      } 
     else if ($numrowz!=0) 
      { 
       $queryUpdate = mysql_query("delete from tbl_user_lists where userid_fk = '$uid' and movie_id_fk = '$mid'"); 
      } 




?> 

下面是調用上面的PHP頁面

<script> 
$(function(){ 
    $('.img-swap').live('click', function() { 
     var _src = $(this).attr('src'); 
     if (-1 == _src.indexOf('_on')) { 
      $(this).attr('src',_src.replace('_off','_on')).removeClass('off'); 
     } else { 
      $(this).attr('src',_src.replace('_on','_off')).addClass('on'); 
     } 

     // Update server 
     $.get('updatelist.php?image='+escape($(this).attr('src'))); 
     $(this).toggleClass("on"); 
    }); 
}); 
</script>  
+0

請修復您的職位(代碼高亮)。 – 2011-04-09 18:56:53

+0

「觸發updatelist.php」是什麼意思?你是通過AJAX調用並檢查響應嗎?或者你通過javascript將用戶重定向到updatelist.php? – 2011-04-09 20:07:19

+0

它是一個jQuery腳本,在用戶點擊圖像時在主頁上調用,jquery獲取圖像的名稱並將其發送到updatelist.php以更新db中的表格 – 2011-04-09 20:58:06

回答

4

的主網頁上的腳本你想:

if ($updatecount == 13) 
     { 
      header('Location: main.php'); 
      exit(); 
     } 

基本上你正在做的賦值運算符而不是比較,並且在重定向後應始終調用exit()。

+0

標題(位置)應該是絕對路徑。現在無法搜索它,但它應該。 :) – 2011-04-09 19:01:18

+0

@adam,我認爲它應該是一個網址,而不是一條路徑。 – cbrandolino 2011-04-09 19:09:23

+0

我的不好,用我的母語,路徑/網址在這個意義上沒有太大的區別。無論如何,它應該是絕對**網址**然後。從php.net/header.php:'HTTP/1.1需要一個絕對URI作爲參數»位置:包括方案,主機名和絕對路徑,但一些客戶端接受相對URI' – 2011-04-09 19:16:08

0

可能造成的問題的一些問題:

  1. Location:後,你應該寫一個完整的URL;
  2. if ($updatecount = 13)將始終返回true,請使用比較運算符(if ($updatecount == 13));
  3. 重定向後不應執行任何代碼:在標題行之後添加exit;;
  4. 請確保根本沒有輸出,否則php將無法設置標題:您的<?php開始標記文件中的第一件事情?以前沒有html嗎?
  5. 作爲計數的測試,如果有疑問,在每次循環後總是輸出結果:它將有助於避免在開始使用php時出現的幾個錯誤,最明顯的是錯過。

另外,我不知道,如果你的應用程序將可公開訪問:在這種情況下,請記住,用戶不會在你的HTML作爲他們可以張貼的價值觀必然的選項,所以逃避查詢(或使用預準備語句)來避免sql注入的風險。

+0

當我嘗試2時,它導致它不插入記錄,如果它低於13的計數。感謝您對sql注入的建議,在我能夠獲得功能工作後添加旁邊。 – 2011-04-09 19:38:42

+0

對不起,我在第2點犯了一個錯誤(已更正)。最外面的括號不被視爲代碼的一部分。 – cbrandolino 2011-04-09 20:18:25

+0

現在我想到了,最後兩個條件(if,else if)檢查相同的條件。第二個永遠不會是真的,這樣。 – cbrandolino 2011-04-09 20:19:22

0

所以你通過JS調用遠程PHP腳本?我不認爲向JS代碼發送標題響應會在調用它的頁面中執行任何操作。您可以讓您的PHP腳本根據其結果返回預定的代碼,然後在返回「最大」代碼的情況下重定向JS代碼。

喜歡的東西(假設jQuery是可用的)

<script> 
$.get("your_php_script.php" , function (response){ 
    if(response == "max") { 
      // redirect 
      window.location="other_page.php"; 
    }} 
); 
</script> 
+0

我已將此添加到我的主頁,但沒有得到預期的效果。這有什麼關係,我已經有jquery調用同樣的updatelist.php頁面? – 2011-04-09 21:27:36

+0

哦,我應該提到上面的代碼片段並不打算按原樣使用。對不起,我沒有審查上述功能。它類似於我曾經登錄過的腳本。至於你的問題,我不得不看看你的HTML源代碼。也許你可以在你的原始問題中發佈一些內容? – 2011-04-11 00:36:34

+0

對不起。我在編碼方面充其量只是新手,我對js和jquery一無所知。我從我的主頁添加了調用updatelist.php頁面的jquery腳本。它在我原來的職位的底部。 – 2011-04-12 01:30:20