我是处理网络编程的新手,不习惯通过网站处理数据流。
我一直在寻找一种从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>
答案 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应该是一个好的开始。