gpt4 book ai didi

PHP IP 地址在循环中被截断

转载 作者:可可西里 更新时间:2023-11-01 08:24:45 24 4
gpt4 key购买 nike

我有一个包含 IP 地址的 MySQL 表: Table IP addresses

(IP, Bloccato, DataCreazione, IDOperatoreCreazione, DataModifica, IDOperatoreModifica)当我在 PHP 中循环地址时,它们将被截断:

string(3) "192"

string(3) "192"

string(3) "192"

string(2) "80"

我的代码:

public function getListaIndirizzi(Request $request) {

// Paginazione
if (!$request) {
$validator = Validator::make($request->all(), [
"indirizzo1" => "ip",
"indirizzo2" => "ip"
]);

if ($validator->fails()) {
return redirect()->back()->withInput()->withErrors($validator);
}

$indirizzi = IP::whereBetween("IP", [$request->get("indirizzo1"), $request->get("indirizzo2")])->paginate(10);
} else {
$indirizzi = IP::paginate(10);
}

for($i =0; $i < count($indirizzi); $i++) {
LogController::debug((string)($indirizzi[$i]["IP"]));
}
die;

return view("lista_indirizzi", ["indirizzi" => $indirizzi]);
}

我使用的是 Laravel 框架

那是我的模型,我如何指定 IP 字段是字符串而不是整数?

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Ip extends Model {

//
protected $table = "ip";

protected $primaryKey = "IP";
public $timestamps = false;

protected $fillable = [
"IP", "Bloccato"
];

protected $hidden = [
'DataCreazione', 'IDOperatoreCreazione', 'DataModifica', 'IDOperatoreModifica'
];

}

我在我的模型上用这段代码解决了我的问题:

public function getIPAttribute($value) {
return (string) $value;
}

最佳答案

我认为您的问题的根源在于模型中的某处。

看起来模型中字段的类型是整数,而不是字符串。因此,Laravel(或其 ORM)会在从数据库中获取字符串之后和您使用它之前立即将字符串转换为整数。

概念验证:

<?php
$ip = "192.168.1.1";
echo (int)$ip; // prints "192"

即使在进行调试时:

LogController::debug((string)($indirizzi[$i]["IP"]));

评估为 (string)(192) 因为 $indirizzi[$i]["IP"] 已经是整数“192”。

关于PHP IP 地址在循环中被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41300909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com