数据包含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文件是源代码[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP 包含文件和文件系统的性能影响

php和Pdo包括与其他页面的连接[重复]

php和Pdo包括与其他页面的连接[重复]

从php中的csv文件读取大数据[重复]

PHP 不会从 for 循环在数据库中插入重复项

访问包子目录中的数据[重复]