You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP表单如何校验URL字段是否包含指定域名thisismydomain.com

PHP域名校验逻辑修复方案

原有代码存在的两个核心错误

  • 匹配目标字符串多了冗余字符:原代码搜索的内容为thisismydomain.com"(末尾携带多余双引号),正常用户输入不会包含该字符,导致匹配逻辑完全失效
  • 校验逻辑完全倒置:当前规则为「输入包含指定域名则抛出错误」,与需求「仅包含指定域名的输入可通过校验」完全相反

基础修复版代码

直接修复原有问题,满足基础需求:

// 去除输入首尾空白,避免空格导致的误判
$inputUrl = trim($_POST['vurl']);
// 不包含指定域名时抛出错误,使用stripos忽略大小写匹配
if (stripos($inputUrl, 'thisismydomain.com') === false) {
    redirectWithError("请输入合法的URL地址");
}

严谨增强版代码

避免恶意构造的输入绕过校验(比如fake-thisismydomain.com、thisismydomain.com.fake.com这类不符合要求的内容),安全性更高:

$inputUrl = trim($_POST['vurl']);
// 无协议前缀时自动补全,保证parse_url可正常解析
if (!str_starts_with($inputUrl, 'http://') && !str_starts_with($inputUrl, 'https://')) {
    $inputUrl = 'https://' . $inputUrl;
}
// 提取URL中的域名部分
$host = parse_url($inputUrl, PHP_URL_HOST);
// 校验域名是否为指定域名或其子域名
if ($host === false || !str_ends_with($host, 'thisismydomain.com')) {
    redirectWithError("请输入合法的URL地址");
}

注:str_starts_with、str_ends_with为PHP8.0及以上版本新增函数,若使用低版本PHP,可做如下替换:

  • str_starts_with($inputUrl, 'http://') 替换为 stripos($inputUrl, 'http://') === 0
  • str_ends_with($host, 'thisismydomain.com') 替换为 stripos($host, 'thisismydomain.com') === strlen($host) - strlen('thisismydomain.com')

内容的提问来源于stack exchange,提问作者Greenreader9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:48:02