数据包含php文件是源代码[重复]
Posted
技术标签:
【中文标题】数据包含php文件是源代码[重复]【英文标题】:data contains the php file is source code [duplicate] 【发布时间】:2018-07-09 03:51:50 【问题描述】:我正在尝试使用 ajax 确认 html 文件 和 php 文件 之间的连接:
$.get(
'database_query.php?begin='+$("#begin").val(), // Le fichier cible côté serveur.
'false', // Nous utilisons false, pour dire que nous n'envoyons pas de données.
function(data,status)
if(data == 'Success')
// Le membre est connecté. Ajoutons lui un message dans la page html.
alert("<p>Vous avez été connecté avec succès !</p>");
else
// Le membre n'a pas été connecté. (data vaut ici "failed")
alert("<p>Erreur lors de la connexion...</p>"+data+" "+status);
// Nous renseignons uniquement le nom de la fonction de retour.
,
'text' // Format des données reçues.
);
然而,我在 data 中得到的回报是触发的 php 文件的漏洞源代码,而不是 "Success" 或 "Failed" > !?
这是触发的 php 文件:
<?php
try
// On se connecte à mysql
$bdd = new PDO('mysql:host=localhost;dbname=nyc;charset=utf8', 'root', '');
catch(Exception $e)
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
if(isset($_GET["begin"]))
echo "Failed";
else
echo "Success";
?>
注意:状态包含成功! 在控制台中我收到此错误:
XML Parsing Error: no root element found
Location: file:///C:/xampp/htdocs/nyc-project/database_query.php?begin=2018-07-11
Line Number 33, Column 3:
怎么了?如何解决?
【问题讨论】:
作为一个提示,你不需要传递'false'
来指定使用$.get('url', successCallback, dataType)
时不发送数据请参见jQuery.get()
上的最后一个示例jQuery将自动检测typeof
的数据参数作为成功回调函数[sic]
【参考方案1】:
也许你可以试试这个:
<!doctype html>
<html lang="fr">
<head>
<title>Test</title>
<meta charset="utf-8" />
</head>
<body>
<script src="jquery-3.3.0.min.js"></script>
<script>
(function($)
var jqxhr = $.get(
'database_query.php?begin='+$("#begin").val(),
function(data)
if(data == 'Success')
// Le membre est connecté. Ajoutons lui un message dans la page HTML.
alert("<p>Vous avez été connecté avec succès !</p>");
else
// Le membre n'a pas été connecté. (data vaut ici "failed")
alert("<p>Erreur lors de la connexion...</p>"+data);
)
.fail(function(data)
console.log(data);
alert(data.responseText);
);
)(jQuery);
</script>
</body>
</html>
如果你进入fail函数并且如果你显示php错误,你会看到它为什么不工作。
有关 jQuery.get() 和该页面上的承诺的更多详细信息:https://api.jquery.com/jquery.get/
【讨论】:
【参考方案2】:我认为问题是你的PHP服务器运行不好。你可以像这样写一个php文件
<?php
phpinfo();
?>
然后你可以通过网络浏览器访问这个文件,你能看到什么?如果你能看到php信息,说明你的服务器运行良好,但是如果你能看到代码源代码,说明你应该设置你的服务器
【讨论】:
我做到了,我可以看到 php 信息【参考方案3】:显然我用the aid of this issue追踪了问题的根源
问题出在网址中:
而不是
'database_query.php
我应该放
'localhost/nyc/database_query.php'
在此之后,之前的错误消失了,出现了新的错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at file:///C:/xampp/htdocs/nyc-project/localhost/nyc/database_query.php?begin=x. (Reason: CORS request not http).
【讨论】:
您需要将浏览器导航到http://localhost/nyc/file.html
,而不是通过在资源管理器中双击 HTML 文件来执行。然后在 jQuery URL 中,您需要使用 FQDN URL http://localhost/nyc/database_query.php
这应该是添加到您原始问题中的附加信息,而不是答案。以上是关于数据包含php文件是源代码[重复]的主要内容,如果未能解决你的问题,请参考以下文章