RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-207380

Rosnowsky's questions

Martin Hope
Rosnowsky
Asked: 2020-10-25 20:46:55 +0000 UTC

PHP 路由。多语言和站点模块的定义(管理面板/网站)

  • 0

晚安。我绞尽脑汁,想不出如何实现多语言以及如何在管理面板和网站的常规版本之间切换。
我开始写我自己的路由器,因为我仍然不知道如何找到框架的通用语言,我就是想不通。
我真的希望有人能帮我实现我的路由选项。因此,我将描述问题和任务:

我正在创建一个网站。需要制作多语言(3 种语言)和管理面板。链接应该是这样的:
普通版

  1. http://web-site.com/
    • http://web-site.com/catalog/auto/
    • http://web-site.com/catalog/auto/product/product-url/
    • http://web-site.com/
  2. http://web-site.com/ru/
    • http://web-site.com/ru/catalog/
    • http://web-site.com/ru/catalog/auto/
    • http://web-site.com/ru/catalog/auto/product/product-url/

如果您在地址栏中添加/admin/,则重定向应该可以工作并将目录与管理面板文件连接起来。

  • http://web-site.com/admin/
  • http://web-site.com/admin/products/auto/

该文件.htaccess包含以下内容:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !^favicon\.ico
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?$1 [L,QSA]

我希望网站在打开网站时默认为俄语,即表单链接http://web-site.com/为俄语,如果用户选择不同的语言,则网站上的所有链接都会自动格式化为指定的格式语言环境,即 :
http://web-site.com/catalog/格式为http://web-site.com/en/catalog/. 我不知道如何使用 php 将所有链接转换为所需的语言环境。

这是我的路由器:

class Router {    
    public $URI = [];
    public $TEMPLATE; 
    public $MODULE = []; 
    public $LOCALE;

    function __construct() {
        self::parseQueryString();
    }

    function parseQueryString() {
        /**
         * Метод который парсит строку запроса, и возвращает массив $URI
         **/
        $parsedString = parse_url($_SERVER['QUERY_STRING'], PHP_URL_PATH);

        $parsedString = explode('/', $parsedString);

        $this->URI = $parsedString;

        return $this->URI;
    }

    function setTemplate() {
        /**
         * Этот метод должен запустить проверку на существование шаблона
         * если таков есть, то возвращает название шаблона, если нет 
         * то название шаблона ошибки
         **/
        $template = $this->TEMPLATE;

        if (!$this->checkTemplate($template, $module)) $template = 'error';

        return $template;
    }

    function checkTemplate($template, $module) {
        /**
         * Этот метод проверяет наличие файла (шаблона)
         * Возвращает TRUE | FALSE
         **/
        $checkPath = $_SERVER['DOCUMENT_ROOT'] . '/application/views/' . $module . '/';
        $checked   = false;

        if (file_exists($checkPath . $template . '.php')) $checked = true;

        return $checked;
    }

    static function redirect($path = NULL) {
        /**
         * Статический метод обычной перезагрузки.
         * Использую после отправки формы методом пост,
         * либо когда это нужно
         **/
        if (!$path) {
            $redirect = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : $_SERVER['REQUEST_URI'];
            header("Location: $redirect");
        } else
            header("Location: /$path");
        exit;
    }
}

事情还没完,所以我才来找你。我希望有人会帮助添加或解释如何做到这一点。

首先,路由器必须接受并解析地址栏。这就是我所做的。
但现在我需要为正确的语言环境自动检测和格式化链接。例如,用户来到该站点:
http://web-site.com/他进入了俄语主页。然后转到产品目录http://web-site.com/catalog/并切换到英语,我需要将用户重定向到http://web-site.com/en/catalog/并在路由器中接受这个/en/并将其传递给一个变量$LOCALE,然后我可以使用该变量在所需的语言环境中显示必要的信息。
如果用户在地址栏中输入,http://web-site.com/admin/那么他应该被重定向到管理面板的授权页面。但我不太明白该怎么做。
我的文件夹结构是这样的:

  • web-site
    • application
      • configs
        • config.php
      • controller
        • controller.php
      • core[目录]
        • Router.php
        • Database.php
      • models[目录]
        • CatalogModel.php
        • NewsModel.php
        • ETC...
      • views
        • web_site[普通用户的网站页面类型]
        • control_panel[管理面板的页面类型]
      • loader.php
    • css
    • img
    • js
    • uploads
    • index.php

该文件loader.php在一开始就包含所有必要的文件。
然后我controller.php在文件中运行我的路由器。
不幸的是,我不知道该去哪里,下一步该做什么。如果您需要更多信息,我会提供您需要的一切。

php
  • 1 个回答
  • 10 Views
Martin Hope
Rosnowsky
Asked: 2020-09-26 20:58:37 +0000 UTC

SQL主键和外键,解释原理

  • 0

我有两个表:product_content和product_images。在第一个中,我存储了有关产品的所有文本信息,在另一个中,我存储了图像的地址。

表结构:

产品内容:

id - 主键
url-varchar
标题 - varchar
内容文本
元标题文本
元描述文本
meta_keywords-文本
已删除 - 整数 (0|1)

产品图片

id - primary_key
product_id - 整数
全尺寸文本
mini_size-文本
删除-int (0|1)

添加产品时,我对数据库进行了两次查询:

`$query_content = "插入产品内容
              (网址、标题、内容、元标题、元描述、元关键字)
       VALUES (:url, :title, :content, :meta_title, :meta_descritpion, :meta_keywords)";`

id然后我从请求中获取最后一个$query_content并将其传递给下一个插入图像的请求。请求在循环中执行。

`$query_image = "INSERT INTO product_images
              (product_id, full_size, mini_size)
       VALUES (:product_id, :full_size, :mini_size)";`

问题:如果我制作product_images一个列product_id- 外键,它将如何帮助我?我需要获取插入到表中的产品的 IDproduct_content吗?就是完全不明白为什么会有外键这样的索引。你能用我的例子解释一下吗?我看了文档,什么都不懂。谢谢你。

php
  • 1 个回答
  • 10 Views
Martin Hope
Rosnowsky
Asked: 2020-09-22 09:01:13 +0000 UTC

PHP 安全问题。过滤传入数据

  • 14

最近我开始对创建的应用程序的安全性感兴趣,我对一些与 PHP 中的数据过滤和安全身份验证/授权相关的事情感兴趣。在谷歌中我发现了很多不同的信息,但还不足以得出结论。也许有人会告诉你或指引你走上正确的道路,可以这么说。

主要问题:

  • 我是否需要完全过滤所有输入数据,包括。全局数组$_SERVER, $_REQUEST, $_GET, $_POST, $_COOKIE, 即使它们没有输入到数据库中。我应该考虑哪些一般要点?
  • 是用filter_var(),filter_input()等等好还是用正则表达式好。或者什么时候使用一个而不是另一个更好。
  • 站点上的哪种授权方法可以被认为是安全的?
  • 使用PDO,我能不害怕一次绑定变量吗(我从来没有这样做过,只是想知道这样的行为有多安全)bindValue(':param', $_POST['value']);
  • 如果我有一个 HTML(wysiwyg) 编辑器,那么我需要在保存到数据库之前使用htmlspecialchars($var, ENT_QUOTES, 'UTF-8');和函数htmlspecialchars_decode($var, ENT_QUOTES);。

我现在有什么:

网站上的授权如下:用户输入登录名/密码。向服务器发出请求并尝试通过指定登录获取数据(ID、密码、唯一用户哈希)。如果有,则函数检查密码password_hash($password, PASSWORD_DEFAULT);,如果成功,则创建 cookie,并为用户创建一个新的哈希值:

$user_hash = md5( md5( time() + time() * rand(2, 10) ));
SessionModel::setCookie('_auth', md5($user_id), AUTH_TIMEOUT); SessionModel::setCookie('_token', $user_hash, AUTH_TIMEOUT);

到目前为止,我还没有弄清楚在哪里以及如何明智地使用这个哈希来确认用户的身份。很可能,这里没有安全的气味,这就是我寻求建议的原因。

数据过滤:

大约两周前,我完全切换到 OOP 并开始使用 PDO,在此之前我用它mysqli来连接,所以为了清除传入数据,我编写了自己的函数,例如:

function clear($var) {

    $link = mysqli_connect(HOST, USER, PASSWORD, DB) or die( mysqli_error($link));
    $var = strip_tags($var);
    $var = htmlspecialchars($var);
    $var = mysqli_real_escape_string($link, strip_tags($var));
    mysqli_close($link);

    return $var;
}

现在我根本不对传入数据使用过滤,除了 html 代码,为此我使用

$encoded = htmlspecialchars($var, ENT_QUOTES, 'UTF-8');

$decoded = htmlspecialchars_decode(htmlspecialchars_decode($var, ENT_QUOTES), ENT_QUOTES);

后者再次重复,因为出于某种原因它没有正常显示第一次解密的​​实体,我不知道为什么,但纯粹是偶然它以这种方式工作。我收到的其余数据是这样的:

$title = $_POST['title'];- 有时我用它trim()来删除空格 :))

总的来说,我知道我不太可能在这里收到每个问题的详细答案,但我会非常感激,即使是今天相关的文章,也有这些问题的答案或答案。学习PHP大概1.5-2年了,最简单的问题(或者不简单的)我都不知道答案。正如实践所示,在谷歌中很难找到这样的东西。

我很乐意提供一般性建议 :) 谢谢。

php
  • 4 个回答
  • 10 Views
Martin Hope
Rosnowsky
Asked: 2020-09-19 22:59:58 +0000 UTC

PHP OOP、继承和类对象

  • 0

我正在用 PHP 学习 OOP,我不太明白继承和类对象之间的区别。我将举一个关于我当前项目的例子。

我有一个类class connectPDO{},一个单例,用于连接到数据库。

有一个类class Utility{},在这个类中我有一些辅助方法可以在页面上显示消息,或者打印数组,或者做一些其他的小事情。

有一个类class ProductsModel{},它负责与产品相关的一切(显示所有产品、编辑、删除……等等)。

所以,在课堂class ProductsModel{}上,我有以下内容:

class ProductsModel{

private $_pdo;
private $systemMessage;

  function __construct() {

    $this->_pdo = connectPDO::getInstance();
    $this->systemMessage = new Utility();
  }

  function delete($id) {
    //....что-то делаем...
    return $this->systemMessage->response('Продукт удален');
  }
}

为了连接到基础,我创建了一个类的对象class connectPDO{},因为它似乎不能被继承。对于一个class Utility{}有消息输出方法的类,我也做了一个对象,因为我更容易传递数据来显示消息,而不需要任何继承。

请解释继承类和在必要时创建新对象之间的区别。继承和创建类对象有什么好处

php
  • 1 个回答
  • 10 Views
Martin Hope
Rosnowsky
Asked: 2020-09-14 19:55:12 +0000 UTC

将您的脚本实施到其他站点。javascript

  • 1

我想知道我是否可以编写自己的小脚本(JS、JQuery),例如,更改背景颜色并嵌入(连接)到另一个站点。

例如,有一个http://example.com/背景颜色为红色的站点,我能否以某种方式连接脚本以将颜色更改为绿色?从哪里开始朝这个方向看?

javascript
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5