满足条件时重定向

时间:2011-04-09 18:53:53

标签: php

计数达到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>    

3 个答案:

答案 0 :(得分:4)

你想:

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

基本上你是在做一个赋值运算符而不是比较,你应该在重定向后调用exit()。

答案 1 :(得分:0)

可能导致此问题的一些问题:

  1. Location:之后你应该写一个完整的网址;
  2. if ($updatecount = 13)将始终返回true,改为使用比较运算符(if ($updatecount == 13));
  3. 重定向后不应执行任何代码:在标题行后添加exit;;
  4. 确保根本没有输出,或者php无法设置标题:你的<?php开头标记是文件中的第一个标记吗?以前没有html吗?;
  5. 作为对计数的测试,如果有疑问,总是在每次循环后输出结果:当你从php开始时,它将有助于避免几个错误,最明显的是逐个错误。
  6. 此外,我不知道您的应用程序是否可以公开访问:在这种情况下,请记住用户没有绑定到您的html中的选项,因为他们可以发布的值,所以逃避您的查询(或使用准备语句)以避免sql注入的风险。

答案 2 :(得分:0)

所以你通过JS调用远程PHP脚本?我不认为发送JS代码的头响应将在调用它的页面中执行任何操作。您可以让PHP脚本根据其结果返回预定的代码,然后在返回“max”代码时重定向JS代码。

类似的东西(假设jQuery可用)

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