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

CodeIgniter 4 自定义用户ID提交后带斜杠,如何去除斜杠仅存数字?

解决CodeIgniter 4中自定义用户ID末尾带"/"的问题

问题根源

你视图里的隐藏input标签写法不规范:

<input type="hidden" name="user_id" value=<?=$userid?>/>

这里value属性未用引号包裹,<?=$userid?>后直接跟了标签闭合符/>,浏览器会把/解析为value值的一部分,导致提交的user_id变成数字/的格式。

修复方案

1. 修正视图的input标签写法

给value属性加上双引号,移除多余的/,保证代码解析正确:

<form action="/dashboard/post" method="post">
<input type="hidden" name="user_id" value="<?=$userid?>" />
<div class="form-group">
<label for="">Username</label>
<input type="text" name="user_name" id="" class="form-control">
</div>
<div class="form-group">
<label for="">Email</label>
<input type="text" name="user_email" id="" class="form-control">
</div>
</form>

2. 控制器接收数据时做兜底过滤(推荐)

为了彻底确保存入数据库的是纯数字,在处理表单提交的控制器方法中,对user_id做强制转换或过滤:

public function post()
{
    // 获取提交的user_id并强制转为整数,自动去除非数字内容
    $userId = (int)$this->request->getPost('user_id');
    
    // 组装数据存入数据库
    $model = new DataModel();
    $data = [
        'user_id' => $userId,
        'user_name' => $this->request->getPost('user_name'),
        'user_email' => $this->request->getPost('user_email')
    ];
    $model->save($data);

    // 后续业务逻辑...
}

补充:优化自定义ID生成逻辑

你当前用count($user)生成ID存在隐患(数据删除后会出现重复ID),可以改成取现有最大ID再加1:

public function index()
{       
    $model = new DataModel();     
    // 获取当前最大的user_id,无数据时默认0
    $maxUserId = $model->selectMax('user_id')->get()->getRow()->user_id ?? 0;
    $hidden_data = [
        'userid' => $maxUserId + 1
    ];
    return view('dashboard', $hidden_data);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:05:28