Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP函数在页面加载时自动调用,而不是通过onclick事件调用_Php_Javascript_Session_Web Applications_Post - Fatal编程技术网

PHP函数在页面加载时自动调用,而不是通过onclick事件调用

PHP函数在页面加载时自动调用,而不是通过onclick事件调用,php,javascript,session,web-applications,post,Php,Javascript,Session,Web Applications,Post,我正在尝试将网页的用户重定向到两个不同页面中的一个,这取决于他们单击两个按钮中的哪一个。我的方法是将每个onclick事件链接到一个javascript函数,该函数将调用一个php函数,该函数使用header()函数重定向到相应的页面。不幸的是,两个php函数中的后一个,即insertIntoTable(),在每次页面加载和重定向时都会被自动调用,用户甚至没有机会用按钮查看页面。我想知道这是否是PHP扩展方式的产物?我真的不明白,因为似乎只有在onclick事件监听器调用包装javascript

我正在尝试将网页的用户重定向到两个不同页面中的一个,这取决于他们单击两个按钮中的哪一个。我的方法是将每个onclick事件链接到一个javascript函数,该函数将调用一个php函数,该函数使用header()函数重定向到相应的页面。不幸的是,两个php函数中的后一个,即insertIntoTable(),在每次页面加载和重定向时都会被自动调用,用户甚至没有机会用按钮查看页面。我想知道这是否是PHP扩展方式的产物?我真的不明白,因为似乎只有在onclick事件监听器调用包装javascript函数之前,才应该调用包装javascript函数,而php函数则应该在与onclick链接的javascript函数上调用。这是代码

<?php
    session_start();
?>
<html>
    <head>
        <script>
            function createATable()
            {
                <?php createATable(); ?>
            }

            function insertIntoTable()
            {
                <?php insertIntoTable(); ?>
            }
        </script>
    </head>
    <body>
        <?php
            // Define our redirection functions for button click events
            function createATable()
            {
                header("Location: http://codd.edu/Project2/createtable.php?<?php echo htmlspecialchars(SID); ?>");*/
            }
            function insertIntoTable()
            {
                header("Location: http://codd.edu/Project2/insertintotable.php?<?php echo htmlspecialchars(SID); ?>");*/
            }

            // Set session variables so that we don't need to worry about whether
            // we're coming from sign in or registration - if $Session['user_name'] 
            // isn't set, we know were coming from the sign in
            if (!$_SESSION['user_name'])
            {
                $_SESSION['user_name'] = $_POST['nametextbox'];
                $_SESSION['user_psswd'] = $_POST['psswdtextbox'];
                echo "<br />setting session variables";
            }
            echo "<br />Not setting session variables";

            // If we aren't setting the session variables, then we are coming from the 
            // registration page, and therefore know that this isn't an admin account
            $_SESSION['is_admin'] = "false";

            // Connect to database
            $conn = mysql_connect("localhost", "601", "23");
                or die('Could not connect: ' . mysql_error());

            // Open database
            mysql_select_db("601", $conn) 
                or die('Could not find database: ' . mysql_error());

            // Get USER tuples, if any
            $user = mysql_query("SELECT * FROM USERS WHERE name='$_SESSION[user_name]' AND password='$_SESSION[user_psswd]'");

            // If there are no entries for this SELECT command, we cannot 
            // allow the user to log in 
            $num_user = mysql_num_rows($user);
            if ($num_user < 1) 
            {
                $_SESSION['is_user'] = "false";
                header("Location: http://codd.edu/Project2/login.php?<?php echo htmlspecialchars(SID); ?>");
                exit;
            } 
            else 
            {
                $_SESSION['user_id'] = SID;
                $_SESSION['is_user'] = "true";
                echo "Welcome ", $_SESSION['user_name'], "!";
                echo "<br />User ID: " . $_SESSION['user_id'];
                echo "<br /> User Password: " . $_SESSION['user_psswd'];
                echo "Is valid user? " . $_SESSION['is_user'];
                session_destroy();

                echo "<button name='createtable' onclick='createATable()'>Create a Table</button>";
                echo "<br /><button name='insert' onclick='insertIntoTable()'>Insert into Table</button>";
            }
        ?>
    </body>
</html>

函数createTable()
{
}
函数插入表()
{
}

我看不出有什么理由在加载页面时不调用
createATable()
。PHP在javascript之前在不同的环境中进行评估。此外,PHP允许您在调用函数后定义/声明函数,这正是您所做的

假装是PHP解释器:它不知道什么是javascript。您甚至可以将
行包装为
yadayada。。。qweryasdasd
在它之前和之后,它将运行

请阅读以下内容,看看是否有帮助:


注:这与您的问题无关,但请看一看:

我看不出有什么理由在加载页面时不调用
createATable()
。PHP在javascript之前在不同的环境中进行评估。此外,PHP允许您在调用函数后定义/声明函数,这正是您所做的

假装是PHP解释器:它不知道什么是javascript。您甚至可以将
行包装为
yadayada。。。qweryasdasd
在它之前和之后,它将运行

请阅读以下内容,看看是否有帮助:


注:这与您的问题无关,但请看一下:

Php在服务器上运行,htnl输出到客户端


不要尝试使用php重定向,而是使用javascript或简单的a href。

php在服务器上运行,htnl输出将发送到客户端


与其尝试使用php重定向,不如使用javascript或简单的a href。

好的,我明白了。感谢gd1,这完全有道理。所以我认为最好的办法是完全转储php函数,用javascript的window.location变量重定向,并在会话ID后面加上?哦,我敢肯定,它容易受到sql注入的攻击,但“数据”都是伪的,只是尝试启动逻辑并暂时工作。是的,使用javascript移动到其他页面。实际上,您甚至可以抑制SID部分,因为会话cookie很少被拒绝。因为SQL注入是可以的,如果您修复了它,但请允许我建议您不要这样做(制作一个带有致命错误的存根,稍后再进行优化),因为有时缺陷无法修复,只是留在那里。好的,我明白了。感谢gd1,这完全有道理。所以我认为最好的办法是完全转储php函数,用javascript的window.location变量重定向,并在会话ID后面加上?哦,我敢肯定,它容易受到sql注入的攻击,但“数据”都是伪的,只是尝试启动逻辑并暂时工作。是的,使用javascript移动到其他页面。实际上,您甚至可以抑制SID部分,因为会话cookie很少被拒绝。因为SQL注入是可以的,如果您修复它,但是请允许我建议您不要这样做(制作一个带有致命错误的存根,稍后再进行优化),因为有时缺陷无法修复,只是留在那里。是的,我现在可以看到了。谢谢,伙计们。是的,我现在明白了。谢谢各位。