Php 使用preg_replace()截断.com或.net或.org后面的字符串
我需要编写一段代码,查看用户的HTTP_REFERER,如果设置了REFERER,则查看MySQL表中的REFERER是否与我们在数据库中注册的域匹配。下面是一些示例代码:Php 使用preg_replace()截断.com或.net或.org后面的字符串,php,regex,preg-replace,Php,Regex,Preg Replace,我需要编写一段代码,查看用户的HTTP_REFERER,如果设置了REFERER,则查看MySQL表中的REFERER是否与我们在数据库中注册的域匹配。下面是一些示例代码: if(isset($_SERVER['HTTP_REFERER'])){ $domain = $_SERVER['HTTP_REFERER']; $con=mysqli_connect("localhost","username","password","database"); $result = mys
if(isset($_SERVER['HTTP_REFERER'])){
$domain = $_SERVER['HTTP_REFERER'];
$con=mysqli_connect("localhost","username","password","database");
$result = mysqli_query($con,"SELECT `domain`, `affiliate_id`
FROM `affiliates`
WHERE `domain` = '$domain'");
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
Mage::getModel('core/cookie')->set('affiliate-cookie', $row['affiliate_id'], 0);
mysqli_close($con);
}
这里我需要的帮助是:$domain=$\u SERVER['HTTP\u REFERER'];我需要$domain包含的只是referer的域,而不是整个referer。因此,它将取代:,理想情况下,将其剥离到somesite.com,尽管如果不可能,我可以接受将其剥离到somesite.com
我对正则表达式一窍不通,但我可以用谷歌搜索。不幸的是,我还没有找到一个在多达三种情况下截断字符串的正则表达式示例。任何帮助都会很好。您可以使用regex进行操作,但请先尝试
我还建议您阅读一些关于PHP中SQL注入的内容,以及如何避免它们。您可以使用正则表达式,但请先尝试
我还建议阅读一些关于PHP中SQL注入的内容以及如何避免它们。甚至比regexp更好,解析URL:。试试看
echo parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
甚至比regexp更好地解析URL:。试试看
echo parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
旁注:使用Magento时,您已经有了一个数据库连接和一个可以使用的请求对象 基本原则如下:
$domain = preg_replace('#^https?://.*?\.([a-z0-9\-]+\.[a-z]{2,})/.*$#', '$1', $req->referer);
您的挑战在于TLD,您可能最好使用preg_replace_回调并集成。侧注:使用Magento时,您已经有了一个数据库连接和一个可以使用的请求对象 基本原则如下:
$domain = preg_replace('#^https?://.*?\.([a-z0-9\-]+\.[a-z]{2,})/.*$#', '$1', $req->referer);
您的挑战在TLD中,您可能最好使用preg\u replace\u回调来解决这个问题,并集成。您正在寻找http://[anything]/,并且希望它在跟踪之前匹配所有内容/ 解决方案:/http:\/\/[^\/]*=\// [^\/]*是0个或多个不可用的字符/ ?=是向前看的,因此不包括尾随斜杠 要将其输入数据库,可以使用Magento的内置函数。更多信息请点击此处: 如果您希望自己动手并安装PHP5,我建议使用PDO 以下是有关其用法的指南: 以下是更深入的指南: 以下是其用法示例: 对于您的项目,您需要从标题获取URL,然后启动数据库连接。 将url插入数据库。关闭连接。PDO不需要环境卫生,因为它使用预先准备好的语句
如果出于任何原因无法使用PDO,请查阅。它还使用准备好的语句。如果您也不能使用它,请使用$sanitized\u string=mysql\u real\u escape\u string$string;要清理url并确保仅在数据库中使用$sanitized_字符串。您正在查找http://[anything]/,并且希望它与尾部之前的所有内容匹配/ 解决方案:/http:\/\/[^\/]*=\// [^\/]*是0个或多个不可用的字符/ ?=是向前看的,因此不包括尾随斜杠 要将其输入数据库,可以使用Magento的内置函数。更多信息请点击此处: 如果您希望自己动手并安装PHP5,我建议使用PDO 以下是有关其用法的指南: 以下是更深入的指南: 以下是其用法示例: 对于您的项目,您需要从标题获取URL,然后启动数据库连接。 将url插入数据库。关闭连接。PDO不需要环境卫生,因为它使用预先准备好的语句
如果出于任何原因无法使用PDO,请查阅。它还使用准备好的语句。如果您也不能使用它,请使用$sanitized\u string=mysql\u real\u escape\u string$string;要清理url并确保只在数据库中使用$sanitized_字符串。我可能不知道这里的内容,但由于用户无法通过表单直接输入任何内容,我还需要担心PHP注入吗?用户会因为扰乱了他们的推荐人的价值而造成伤害吗?第二,当我在我们的Magento安装中构建它时,如果我真的不想偷懒,我可以通过Mage的核心通道路由它,这样可以防止注入。这是懒惰的方式;黑客不使用浏览器,也不是用户,而是自己制作标题。Referer是一个HTTP头,您可以通过telnet简单地设置到Web服务器。我不确定Magento是否对引用程序进行了清理,因为它对引用程序没有任何用处。有没有办法自己清理引用程序?问题是清理的目的是什么?在您的情况下,它是DB,所以请使用准备好的语句,并像往常一样进行清理。@Seff-您有什么建议吗?这对我来说基本上是一个新领域,所以我不完全确定从哪里开始。我可能不知道这里,但由于用户无法通过表单直接输入任何内容,我还需要担心PHP注入吗?用户会因为扰乱了他们的推荐人的价值而造成伤害吗?第二,当我在建筑的时候
在我们的Magento安装中,如果我真的不想偷懒的话,我可以通过Mage的核心通道进行路由,这样可以防止注入。这是懒惰的方式;黑客不使用浏览器,也不是用户,而是自己制作标题。Referer是一个HTTP头,您可以通过telnet简单地设置到Web服务器。我不确定Magento是否对引用程序进行了清理,因为它对引用程序没有任何用处。有没有办法自己清理引用程序?问题是清理的目的是什么?在您的情况下,它是DB,所以请使用准备好的语句,并像往常一样进行清理。@Seff-您有什么建议吗?这对我来说基本上是一个新领域,所以我不完全确定从哪里开始。+1表示parse_url,但如果你想要这个域,你仍然需要解决TLD问题。+1表示parse_url,但是如果你想要这个域,你仍然需要解决TLD问题。