怎么不让输入框输入的二级域名自动修改为一级域名。

目前输入框input输入域名12.abb.cn 他会自动修改为abb.cn 我想输入域名12.abb.cn程序不修改

img

img


<!DOCTYPE html>
<html>
  
  <head>
    <meta charset="UTF-8">
    <title>欢迎页面-L-admin1.0</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
    {include file="head" /}
    <!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
    <!--[if lt IE 9]>
      <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
      <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  
  <body>
    <div class="x-body">
        <form class="layui-form" id="form">
          <div class="layui-form-item">
              <label for="L_email" class="layui-form-label">
                  <span class="x-red">*</span>授权域名
              </label>
              <input type="hidden" name="url_id" autocomplete="off" class="layui-input" value="{$url.id}">
              <div class="layui-input-inline">
                  <input type="text" name="url" autocomplete="off" lay-verify="url"
                   class="layui-input" value="{$url.url}">
              </div>
              <div class="layui-form-mid layui-word-aux">
                  <span class="x-red">*</span>输入顶级域名、如:yhzf.a4ft3q.cn
              </div>
          </div>          
          <div class="layui-form-item">
              <label for="L_repass" class="layui-form-label">
              </label>
              <button  class="layui-btn" lay-filter="add" lay-submit="">
                  提交
              </button>
          </div>
      </form>
    </div>
    <script>
      layui.use(['form','layer'], function(){
          $ = layui.jquery;
        var form = layui.form
        ,layer = layui.layer;
        
        //自定义验证规则
        form.verify({
          url: function(value){
            if(value.length < 3){
              return '请输入正确的域名';
            }
          }
        });

        //监听提交
        form.on('submit(add)', function(data){
          console.log(data);
          //发异步,把数据提交给php
          var form = $("#form").serialize();
          $.ajax({
              url:'{:url("user/index/edit_wchat")}',
              type:'post',
              data:form,
              dataType:'json',
              success:function(data){
                  //console.log(data);
                  if(data.code == 1){
                      layer.alert(data.msg, {icon: 6},function () {
                          // 获得frame索引
                          var index = parent.layer.getFrameIndex(window.name);
                          //关闭当前frame
                          parent.layer.close(index);
                        //刷新父级页面
                        parent.location.reload();
                      });
                      return false;
                  }else{
                      layer.msg(data.msg,{icon:5,time:2000});
                  }
              }
          });
          return false;
        });
        
        
      });
  </script>
  </body>

</html>

<?php

namespace app\user\controller;
use app\common\model\Open_user as openus;
use app\common\model\Open_welist as welist;
use app\common\model\Open_daili as daili;
use think\Controller;
use think\facade\Session;
class Index extends Controller
{
    public function initialize()
    {        
        if(!Session::get('user')){
            return $this->error('未登录','/');
        }
    }
    
    public function index()
    {
        return view();
    }
    public function home()
    {
        $uid = Session('user');
        $user = openus::where('id',$uid)->find();
        $daili = daili::get($user['oid']);
        //单域名接口列表
        $danlist = welist::where(['uid'=>$uid,'type'=>0])->order('id','desc')->paginate(10);
        //多域名接口列表
        $duolist = welist::where(['uid'=>$uid,'type'=>1])->order('id','desc')->paginate(10);
        return view()->assign([
            'user'=>$user,
            'daili'=>$daili,
            'danlist'=>$danlist,
            'duolist'=>$duolist
        ]);
    }
    //多域名授权开通
    public function many_buy()
    {
        $uid = Session('user');
        $money = input('post.money');
        $user = openus::where('id',$uid)->find();//查询会员
        if($user['money'] < $money){//判断会员金额是否足够
            return json(jsoncode(-1,'余额不足,请先充值!'));
        }else{
            $time = time();
            //计算时间
            if($money == 108){
                $many_lstime = $time+3600*24*30;
            }else if($money == 298){
                $many_lstime = $time+3600*24*90;
            }else{
                $many_lstime = $time+3600*24*365;
            }
            //减去会员余额
            $dec = openus::where('id',$uid)->setDec('money',$money);
            if($dec){
                //修改到期时间和类型为多域名授权
                $sql = openus::where('id',$uid)->update([
                    'many'=>1,
                    'many_lstime'=>$many_lstime
                ]);
                
                if($sql){                
                    return json(jsoncode(1,'开通成功'));
                }else{
                    return json(jsoncode(-1,'开通失败'));
                }
            }
        }
    }
    //多域名添加
    public function duourl_buy()
    {
        $uid = Session('user');
        if(strstr(input('post.url'),'http://')==true || strstr(input('post.url'),'https://')==true){
            $url = input('post.url');
        }else{
            $url = 'http://'.input('post.url');
        }
        $url = gethost($url);
        //查询修改的域名是否存在
        $isurl = welist::where('url',$url)->find();
        if($isurl){
            return json(jsoncode(-1,'该域名已存在!'.$url));
        }
        $money = input('post.money');
        $user = openus::where('id',$uid)->find();//查询会员
        if($user['many'] != 1){
            return json(jsoncode(-1,'无权限,请开通多域名授权'));
        }
        //计算时间
        $time = time();
        if($money == 1){
            $lstime = $time+3600*24*30;
        }else if($money == 2){
            $lstime = $time+3600*24*90;
        }else if($money == 3){
            $lstime = $time+3600*24*365;
        }else{
            $lstime = $user['many_lstime'];
        }
        
        $data = [
            'uid'=>$uid,
            'oid'=>$user['oid'],
            'url'=>$url,
            'rotime'=>$time,
            'lstime'=>$lstime,
            'type'=>1
        ];
        $sql = welist::insert($data);
        if($sql){
            return json(jsoncode(1,'添加成功'));
        }else{
            return json(jsoncode(-1,'添加失败'));
        }
    }
    //单域名授权添加
    public function danurl_buy()
    {
        $uid = Session('user');
        if(strstr(input('post.url'),'http://')==true || strstr(input('post.url'),'https://')==true){
            $url = input('post.url');
        }else{
            $url = 'http://'.input('post.url');
        }
        $url = gethost($url);
        //查询修改的域名是否存在
        $isurl = welist::where('url',$url)->find();
        if($isurl){
            return json(jsoncode(-1,'该域名已存在!'.$url));
        }
        $money = input('post.money');
        $user = openus::where('id',$uid)->find();//查询会员
        if($user['money'] < $money){
            return json(jsoncode(-1,'余额不足,请充值!'));
        }
        $daili = daili::get($user['oid']);
        $time = time();
        //计算时间
        if($money == $daili['dan_yue']){
            $lstime = $time+3600*24*30;
        }else if($money == $daili['dan_ji']){
            $lstime = $time+3600*24*90;
        }else if($money == $daili['dan_nian']){
            $lstime = $time+3600*24*365;
        }
        
        //返还百分比
        $money = $money-$money*0.5;
        //减去会员余额
        $dec = openus::where('id',$uid)->setDec('money',$money);
        if($dec){
            $data = [
                'uid'=>$uid,
                'oid'=>$user['oid'],
                'url'=>$url,
                'rotime'=>$time,
                'lstime'=>$lstime
            ];
            $sql = welist::insert($data);
            if($sql){
                return json(jsoncode(1,'授权成功'));
            }else{
                return json(jsoncode(-1,'授权失败'));
            }
        }
    }
    //接口列表
    public function wchat_list()
    {
        $uid = Session('user');
        $user = openus::where('id',$uid)->find();
        $list = welist::where('uid',$uid)->paginate(10);
        return view()->assign([
            'user'=>$user,
            'list'=>$list
        ]);
    }
    //修改授权
    public function edit_wchat()
    {
        $id = input('id');
        if(request()->isPost()){
            $url_id = input('post.url_id');
            if(strstr(input('post.url'),'http://')==true || strstr(input('post.url'),'https://')==true){
                $url = input('post.url');
            }else{
                $url = 'http://'.input('post.url');
             }
             $url = gethost($url);
            //查询修改的域名是否存在
            $isurl = welist::where('url',$url)->find();
            if($isurl){
                return json(jsoncode(-1,'该域名已存在!'.$url));
            }
            $sql = welist::where('id',$url_id)->update([
                'url'=>$url
            ]);
            if($sql){
                return json(jsoncode(1,'修改成功'));
            }else{
                return json(jsoncode(-1,'修改失败'));
            }
            
        }
        $url = welist::get($id);
        return view()->assign([
            'url'=>$url
        ]);
    }
    //删除授权
    public function wchat_del()
    {
        if(\request()->isAjax()){
            $sql = welist::where('id',input('id'))->delete();
            if($sql){
                return $this->success('删除成功');
            }else{
                return $this->error('删除失败');
            }
        }
        
    }
    //续费接口
    public function xufei_wchat()
    {
        $id = input('id');
        //查询当前接口信息
        $url = welist::get($id);
        //查询所属代理
        $daili = daili::get($url['oid']);
        
        if(request()->isPost()){
            $url_id = input('post.url_id');
            $money = input('post.money');
            //查询该接口信息
            $geturl = welist::get($url_id);
            //查询会员信息
            $user = openus::where('id',$geturl['uid'])->find();
            //判断金额是否足够续费
            if($user['money'] < $money){
                return json(jsoncode(-1,'余额不足,请充值!'));
            }
            //计算时间,判断续费时间是否是过期后续费的
            $datetime = time();
            //如果续费的时候该接口还没有过期
            if($geturl['lstime'] > $datetime){
                $time = $geturl['lstime'];
            }else{
                $time = time();
            }
            //查询所属代理
            $daili = daili::get($geturl['oid']);
            //计算时间
            if($money == $daili['dan_yue']){
                $lstime = $time+3600*24*30;
            }else if($money == $daili['dan_ji']){
                $lstime = $time+3600*24*90;
            }else if($money == $daili['dan_nian']){
                $lstime = $time+3600*24*365;
            }
            //减去会员余额
            $dec = openus::where('id',$geturl['uid'])->setDec('money',$money);
            if($dec){
                $sql = welist::where('id',$url_id)->update([
                    'lstime'=>$lstime
                ]);
                if($sql){
                    return json(jsoncode(1,'续费成功'));
                }else{
                    return json(jsoncode(-1,'续费失败'));
                }
            }
        }
        
        return view()->assign([
            'url'=>$url,
            'daili'=>$daili
        ]);
    }
}


参考GPT:在前端 JavaScript 中,您可以使用 window.location.hostname 属性获取当前页面的主机名,然后将其与输入的域名进行比较。如果它们不匹配,则可以阻止表单的提交。

以下是一个示例代码片段:

layui.use(['form', 'layer'], function() {
  var form = layui.form;
  var layer = layui.layer;

  form.verify({
    url: function(value) {
      if (value.length < 3) {
        return '请输入正确的域名';
      }
      
      var inputHostname = value.split('.').slice(-2).join('.'); // 获取输入域名的顶级域名和二级域名
      var currentHostname = window.location.hostname.split('.').slice(-2).join('.'); // 获取当前页面的顶级域名和二级域名
      
      if (inputHostname !== currentHostname) {
        return '禁止修改域名';
      }
    }
  });
  
  // 其他代码...
});

在这个代码中,form.verify() 函数用于添加自定义表单验证规则。url 验证规则使用了一个匿名函数来实现。如果输入的域名长度小于3,则返回一个错误消息。否则,它使用 .split('.') 将输入域名和当前页面的主机名分割成部分,然后使用 .slice(-2) 获取它们的最后两个部分(即顶级域名和二级域名),并使用 .join('.') 将它们连接成一个字符串。最后,它比较两个字符串是否相等,如果不相等则返回一个错误消息。

参考GPT和自己的思路:根据你提供的代码和问题描述,可以简单判断出,修改域名的逻辑在服务端处理。而异步监听指的是在客户端通过 JavaScript 监听服务端返回的数据并做出相应的处理。

如果你希望在客户端避免默认的域名修改行为,可以尝试在表单提交前,通过 JavaScript 禁止默认的表单提交行为,获取表单数据后,自行通过 AJAX 发送数据给服务端进行处理。具体实现方法可以参考 jQuery 的 preventDefault() 方法和 $.ajax() 方法。

同时,如果你希望在客户端提示用户输入不规范的域名,可以通过 layui 的表单验证功能,在表单元素上设置类似 lay-verify="required|url" 的属性,自动判断域名是否符合规范,并在用户输入不符合规范的域名时,提示相应的错误信息。

该回答引用于gpt与OKX安生共同编写:
  • 该回答引用于gpt与OKX安生共同编写:

在浏览器中,输入域名时会按照浏览器的默认行为进行自动处理和转换。如果你想禁止浏览器修改域名,可以使用 JavaScript 拦截表单提交事件,并手动获取表单数据并发送 Ajax 请求。

以下是一些可能有用的示例代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>欢迎页面-L-admin1.0</title>
    <!-- 省略其他头部内容 -->
  </head>
  <body>
    <div class="x-body">
      <form class="layui-form" id="form">
        <div class="layui-form-item">
          <label for="L_email" class="layui-form-label">
            <span class="x-red">*</span>授权域名
          </label>
          <input type="hidden" name="url_id" autocomplete="off" class="layui-input" value="{$url.id}">
          <div class="layui-input-inline">
            <input type="text" name="url" autocomplete="off" lay-verify="url" class="layui-input" value="{$url.url}">
          </div>
          <div class="layui-form-mid layui-word-aux">
            <span class="x-red">*</span>输入顶级域名、如:yhzf.a4ft3q.cn
          </div>
        </div>          
        <div class="layui-form-item">
          <label for="L_repass" class="layui-form-label"></label>
          <button class="layui-btn" lay-filter="add" lay-submit="" id="submit-button">
            提交
          </button>
        </div>
      </form>
    </div>
    <script>
      layui.use(['form','layer'], function(){
        var form = layui.form, layer = layui.layer;
        
        // 监听提交事件
        $('#submit-button').on('click', function(event) {
          event.preventDefault(); // 取消默认提交行为
          
          // 获取表单数据并发送 Ajax 请求
          var url = $('input[name=url]').val();
          $.ajax({
            url: '{:url("user/index/edit_wchat")}',
            type: 'POST',
            dataType: 'json',
            data: {'url': url},
            success: function(data) {
              if (data.code == 1) {
                layer.alert(data.msg, {icon: 6},function () {
                  // 获得frame索引
                  var index = parent.layer.getFrameIndex(window.name);
                  //关闭当前frame
                  parent.layer.close(index);
                  // 刷新父级页面
                  parent.location.reload();
                });
              } else {
                layer.msg(data.msg, {icon: 5, time: 2000});
              }
            },
            error: function(jqXHR, textStatus, errorThrown) {
              // 处理错误情况
            }
          });
        });
      });
    </script>
  </body>
</html>

在这个示例中,我使用 jQuery 拦截了表单的提交事件,并手动获取了输入框中的值,然后通过 Ajax 发送请求到指定的 URL。注意,我使用了 event.preventDefault() 来取消默认的表单提交行为。

希望这些提示能够帮助你禁止浏览器修改域名!

  • 以下是对您的问题的新回答:

浏览器会自动处理和转换输入的域名,并将其转换为符合规范的 URL。如果您想禁止浏览器修改域名,可以考虑使用 JavaScript 中的 URL 对象来手动解析和构建 URL。

具体来说,您可以使用以下代码获取当前页面的 URL,然后从中提取出域名部分:

var url = new URL(window.location.href);
var domain = url.hostname;

然后,您可以使用提取出的域名部分来构建新的 URL,并将其用于后续的操作:

var newUrl = 'https://' + domain + '/your/path';
// 然后使用 newUrl 进行后续操作

这样,您就可以避免浏览器对输入的域名进行处理和转换,从而确保您使用的始终是原始的输入域名。

希望这个解决方案能够帮助到您!

这个问题涉及到浏览器的自动补全功能,可以通过在input标签中添加autocomplete属性来控制浏览器的自动补全行为。
例如,可以将autocomplete属性设置为"off",这样浏览器就不会自动补全输入框中的内容。
<input type="text" name="domain" autocomplete="off">
另外,如果想要完全禁止修改域名,可以考虑使用正则表达式对输入的域名进行验证,如果不符合要求就提示用户重新输入。
例如,可以使用以下正则表达式来验证域名:
/^[a-zA-Z0-9]+(\\.[a-zA-Z0-9]+)*\\.[a-zA-Z]{2,}$/
这个正则表达式可以匹配符合规范的域名,如果用户输入的域名不符合规范,就可以提示用户重新输入。

value="{$url.url}"修改为value="{$url}"试试

该回答引用ChatGPT
您好,在JavaScript中,无法禁止修改浏览器地址栏中的URL。这是由于浏览器的安全限制。但是,你可以使用History API或URL参数来模拟URL的修改,以避免实际上的URL修改
以下是一个使用History API的示例,可以防止浏览器在输入域名时默认修改为顶级域名:

if (typeof history.pushState === "function") {
  var baseUrl = window.location.protocol + "//" + window.location.host;
  var relativeUrl = window.location.pathname;
  var fullUrl = baseUrl + relativeUrl;
  history.pushState(null, null, fullUrl);
}


这段代码会使用history.pushState()方法将当前页面的URL设置为完整的URL,这样就可以避免浏览器默认修改URL了。请注意,这种做法可能会影响浏览器的前进和后退功能,因为实际上没有生成新的历史记录。

JavaScript 本身无法直接禁止修改域名,但是您可以在输入框的事件中进行判断和操作,使得用户无法修改域名。下面是一个简单的示例代码:

lua
Copy code

这段代码会在输入框中输入内容时监听 input 事件,如果用户尝试修改域名,那么输入框的值就会被重置为原来的值,并弹出一个警告框告诉用户域名不能修改。需要注意的是,这种方式并不是完全可靠的,因为用户仍然可以通过浏览器开发工具修改输入框的值,但是对于一般用户来说,应该足够了。如果您需要更高级的安全措施,可以考虑在后台对用户输入的域名进行验证和过滤。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
可以使用正则表达式和 JavaScript 来实现禁止修改域名的功能。在输入域名时,可以检查域名中是否有子域名,如果有,则禁止自动修改。

以下是可以添加到 your_page.tpl 文件的示例代码:

<div class="layui-input-inline">
  <input type="text" name="url" id="url" autocomplete="off" lay-verify="url" class="layui-input" value="{$url.url}">
</div>
<div class="layui-form-mid layui-word-aux">
  <span class="x-red">*</span>输入顶级域名、如:yhzf.a4ft3q.cn
</div>

在下面的 JavaScript 代码中添加以下代码来检查输入域名中是否有子域名:

layui.use(['form', 'layer'], function () {
  $ = layui.jquery;
  var form = layui.form,
    layer = layui.layer;

  // 自定义验证规则
  form.verify({
    url: function (value) {
      if (value.length < 3) {
        return '请输入正确的域名';
      }
    }
  });

  // 监听提交
  form.on('submit(add)', function (data) {
    var url = document.getElementById("url").value;
    if (/^(?:[-A-Za-z0-9]+\.)?[A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9]\.[A-Za-z]{2,6}$/.test(url)) {
      // 发异步,把数据提交给 PHP
      var form = $("#form").serialize();
      $.ajax({
        url: '{:url("user/index/edit_wchat")}',
        type: 'post',
        data: form,
        dataType: 'json',
        success: function (data) {
          if (data.code == 1) {
            layer.alert(data.msg, { icon: 6 }, function () {
              // 获得 frame 索引
              var index = parent.layer.getFrameIndex(window.name);
              // 关闭当前 frame
              parent.layer.close(index);
              // 刷新父级页面
              parent.location.reload();
            });
            return false;
          } else {
            layer.msg(data.msg, { icon: 5, time: 2000 });
            return false;
          }
        }
      });
      return false;
    } else {
      layer.msg('请输入正确的域名!', { icon: 5, time: 2000 });
      return false;
    }
  });
});

在上面的代码中,我们使用了正则表达式来检查输入的域名的格式是否正确。如果输入的域名中有子域名,则不会自动更正。

希望这可以帮助到你。
如果我的回答解决了您的问题,请采纳!

JavaScript无法禁止修改域名,因为域名属于URL的一部分,而JavaScript无法修改URL。JavaScript只能修改当前文档中的内容和属性,但无法控制浏览器地址栏中的URL。此外,浏览器提供的一些防护措施也可以轻松地规避JavaScript对URL的修改。

如果你想保护网站免受DNS劫持等攻击,建议采取其他安全措施,例如使用HTTPS协议来保护数据传输的安全性,使用DNSSEC来防止DNS缓存污染等攻击。此外,可以使用Web应用程序防火墙(WAF)等工具来监视和过滤对您网站的恶意访问。