从Java Script调用PHP

时间:2015-06-15 18:53:17

标签: php jquery

我是处理网络编程的新手,不习惯通过网站处理数据流。

我一直在寻找一种从Java Script或HTML中调用PHP的方法,并且从这个站点获得了许多其他答案的以下代码。我从Stack Overflow得到的一件事是,Ajax是唯一可以做到这一点的好方法,JQuery将是最好的方法。

以下代码是否安全?在这个学习阶段,我还不知道有哪些漏洞吗?

    <?PHP

    $a="hello";

    ?>
    <script>
     function echoHello(){
     alert("<?PHP hello(); ?>");
    }
    </script>

    <?PHP
    FUNCTION hello(){
     GLOBAL $a;
     ECHO $a;
    }

    ?>

    <button onclick="echoHello()">Say Hello</button>

3 个答案:

答案 0 :(得分:1)

这不是AJAX,而是仅在第一次请求时加载的服务器端代码。 使用AJAX的功能模型是:

functions.php文件:

<?php
    $clientSideMethodRequested = $_POST['method'];

    if ($clientSideMethodRequested == "sayhello"){
        tellHimHello();
    }

    function tellHimHello(){
        echo 'Hello!';
    }
?>

客户端AJAX调用:

$(document).ready(function(){
    $.ajax({
        type: "POST",
        url: "mydomain.com/functions.php?method=sayhello",
        success: function(returnedString){
            alert(returnedString);
        }
    });
});

答案 1 :(得分:0)

它无效。 PHP在服务器上执行,JS在浏览器中执行。当您打开页面时,服务器将首先解释您的代码。代码的结果,在此之后将是这样的:

<script>
 function echoHello(){
 alert("hello");
}
</script>


<button onclick="echoHello()">Say Hello</button>

如你所见,&lt;?php和?&gt;之间的一切被删除&#34;来自原始文件。通过&#34;删除&#34;我的意思是执行。

有时,当您的服务器未配置为解释PHP时,您将在浏览器的页面源中看到PHP代码。但它仍然无法工作,因为没有浏览器支持PHP。

答案 2 :(得分:-1)

PHP是一种服务器端语言,因此您的浏览器将会接收到的代码&#34;将包含与PHP无关的任何内容。将会发生的是,这个PHP文件仍将在服务器中解析并执行,您的浏览器将只获得以下代码:

<script>
 function echoHello(){
 alert("hello");
}
</script>

<button onclick="echoHello()">Say Hello</button>

这是您的服务器执行PHP的结果。这可能正是您在此特定情况下的预期,但如果我们想将参数传递给echoHello函数会怎样?

<script>
 function echoHello(speech){
 alert("<?PHP hello(speech); ?>");
}
</script>

<?PHP
FUNCTION hello($speech){
 return $speech;
}

?>

<button onclick="echoHello('hello')">Say Hello</button>
<button onclick="echoHello('bye')">Say Bye</button>

人们可以期待这可以警告“你好&#39;当用户点击第一个按钮或“再见”时对于第二个。事实并非如此,因为服务器在按钮存在之前开始执行此代码(因为它们仅在浏览器下载处理后的文档以呈现元素时才存在),因此甚至无法执行{{ 1}}因为echoHello不是有效变量。对于这种情况和许多其他情况,AJAX确实是最合适的方式。

This tutorial应该是一个好的开始。