首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在我的javascript文件和php文件之间建立一个桥梁代码来保护MySQL信息?

问如何在我的javascript文件和php文件之间建立一个桥梁代码来保护MySQL信息?
EN

Stack Overflow用户
提问于 2019-04-19 00:33:10
回答 1查看 273关注 0票数 5

我有四份文件。

  1. index.php“主页”具有使用MySQL数据库的搜索功能。我称之为数据库抛出javascript,客户端。
  2. fetch.php“包含MySQL连接信息。
  3. bridge.php来覆盖获取文件,我使用php代码来建立连接。
  4. .htaccess文件来阻止对fetch.php文件的任何直接访问。

index.php<--->bridge.php<--->fetch.php<--->Mysql

我的index.php文件下面包含以下代码,而且由于我使用的是JavaScript!.htaccess文件阻止index.php文件访问javascript文件,所以javascript是“客户端”

代码语言:javascript
复制
<script>
$(document).ready(function(){

    function load_data(query)
    {
        $.ajax({
            url:"bridge.php",
            method:"post",
            data:{query:query},
            success:function(data)
            {
                $('#result').html(data);
            }
        });
    }

因此,我让我的javascript代码调用bridge.php文件,bridge.php文件调用fetch.php文件抛出PHP语言,以完成所有这些工作。

所以我的bridge.php文件代码:

代码语言:javascript
复制
<?php
include 'fetch.php';
?>

现在没有人可以直接访问fetch.php,.htaccess文件块,任何直接连接,抛出浏览器,但是如果我调用文件bridge.php,抛出浏览器,它就会打开数据库!这解决不了任何问题!我做错什么了?

这是我的.htaccess文件的代码:

代码语言:javascript
复制
<Files ~ "fetch.php">
  Order deny,allow
  Deny from all
  Allow from 127.0.0.1
</Files>

我的提取文件就是这样调用MySQL的:

代码语言:javascript
复制
$connect = mysqli_connect("localhost", "example.com", "passowrd", "databasename");
$output = '';
if(isset($_POST["query"]))
{
    $search = mysqli_real_escape_string($connect, $_POST["query"]);
    $query = "
    SELECT * FROM tbl_customer 
    WHERE CustomerName LIKE '%".$search."%'
    OR Address LIKE '%".$search."%' 
    OR City LIKE '%".$search."%' 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-19 01:59:57

我认为您使问题过于复杂,或者您以一种无助的方式编写了fetch.php。

我猜您的fetch.php中有MySQL函数或类代码,然后您可以访问和使用。类似于:

代码语言:javascript
复制
<?php

define('MYSQL_SERVER','localhost');
define('MYSQL_LOGIN','mylogin');
... and more ...

class DB {
   ... methods ...
}
?>

fetch.php的关键部分应该是开放的<?php和关闭的?>。

如果您(或其他任何人)直接请求fetch.php,则您的代码应该以完全为空白页的方式编写。

web服务器上唯一的开销是单个PHP传递,然后将空白返回到浏览器。

如果您已经以另一种方式编写了代码,我建议您重新考虑您的方法,并询问您为什么要这样做。

顺便说一下,只有在没有其他方法的情况下,才应该向.htaccess文件添加详细信息。一直到web server preformance, they are not a good idea。

编辑:

如果您确实希望确保fetch.php不是直接调用的,而是只包含在另一个文件中,那么您可以在顶部执行如下操作:

代码语言:javascript
复制
<?php

if (count(get_included_files()) == 1) {
    // direct request, do nothing
    exit;
    // or even redirect somewhere like
    header("Location: /");
    exit;
}

// has been included, allow rest of script to process
$connect = mysqli_connect("localhost", "example.com", "passowrd", "databasename");
// ... more code below
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55755217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档