草庐IT

PHP IP 地址在循环中被截断

coder 2023-10-22 原文

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

当我在 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/

有关PHP IP 地址在循环中被截断的更多相关文章

  1. ruby - 从 Ruby 中的主机名获取 IP 地址 - 2

    我有一个存储主机名的Ruby数组server_names。如果我打印出来,它看起来像这样:["hostname.abc.com","hostname2.abc.com","hostname3.abc.com"]相当标准。我想要做的是获取这些服务器的IP(可能将它们存储在另一个变量中)。看起来IPSocket类可以做到这一点,但我不确定如何使用IPSocket类遍历它。如果它只是尝试像这样打印出IP:server_names.eachdo|name|IPSocket::getaddress(name)pnameend它提示我没有提供服务器名称。这是语法问题还是我没有正确使用类?输出:ge

  2. ruby-on-rails - 验证电子邮件地址是 Paypal 用户 - 2

    我想验证一个电子邮件地址是否是PayPal用户。是否有API调用来执行此操作?是否有执行此操作的ruby​​库?谢谢 最佳答案 GetVerifiedStatus来自PayPal'sAdaptiveAccounts平台会为您做这件事。PayPal没有任何codesamples或SDKs用于Ruby中的自适应帐户,但我确实找到了编写codeforGetVerifiedStatusinRuby的人.您需要更改该代码以检查他们拥有的帐户类型的唯一更改是更改if@xml['accountStatus']!=nilaccount_status

  3. Ruby Regex,获取所有可能的匹配项(不截断字符串) - 2

    我遇到了ruby​​正则表达式的问题。我需要找到所有(可能重叠的)匹配项。这是问题的简化:#Simpleexample"Hey".scan(/../)=>["He"]#Actualresults#Withoverlappingmatchestheresultshouldbe=>["He"],["ey"]我尝试执行并获得所有结果的正则表达式如下所示:"aaaaaa".scan(/^(..+)\1+$/)#Thislooksformultiplesof(here)"a"biggerthanonethat"fills"theentirestring."aa"*3=>true,"aaa"*2=

  4. ruby-on-rails - 从 Geocode 经纬度获取地址 - 2

    对于我的大部分应用程序,我从Geocoder获取城镇/城市的纬度、经度、邮政编码等。我只是投入城市和州,作为返回,我得到了我处于一个有field的场景中。该场所需要一个地址,我正在从另一个来源获取该场所的纬度和经度。使用Geocodergem,我可以通过给地址提供经纬度来获取地址吗? 最佳答案 在Rails控制台中运行。latitude=40.0397longitude=-76.30144geo_localization="#{latitude},#{longitude}"query=Geocoder.search(geo_loca

  5. ruby-on-rails - 如何将电子邮件地址放入 Rails 的 url 中 - 2

    我想邀请在这样的url中传递电子邮件的人:localhost:3000/invite_me/email@gmail.com我尝试了这个匹配,但它不起作用。match"/invite_me/:email"=>"application#invite_me",:constraints=>{:email=>'/.+@.+\..*/'}我收到以下错误:Noroutematches[GET]"/invite_me/waldyr.ar@gmail.com"rake路由输出:root/application#index/invite_me/:email(.:format)application#inv

  6. ruby-on-rails - 在 Ruby on Rails 的每个循环中,如果没有任何迭代,是否有做某事的好方法? - 2

    有没有一种简单的说法:否则,如果没有任何循环,则显示“无对象”。似乎应该有一个很好的语法方法来执行此操作而不是计算@user.find_object("param")的长度 最佳答案 你可以这样做:if@collection.blank?#@collectionwasemptyelse@collection.eachdo|object|#Youriterationlogicendend 关于ruby-on-rails-在RubyonRails的每个循环中,如果没有任何迭代,是否有做某事的

  7. ruby - Aptana 3 ruby​​ 调试器 - DebugThread 循环中的异常 : undefined method `is_binary_data?' - 2

    我正在尝试在Aptana3中调试简单的ruby​​文件。classHelloWorlddefinitialize()enddefgreet()puts"helloworld"endendh=HelloWorld.newh.greet断点设置为h.greet在我开始调试后,调试器启动,但是当它尝试初始化ruby​​类时,调试器断开连接并显示消息FastDebugger(ruby-debug-ide0.4.9)listenson:54749ExceptioninDebugThreadloop:undefinedmethod`is_binary_data?'for"#":String当我将断

  8. ruby - 如何在 ruby​​ 中获取 ip 地址、referer 和用户代理? - 2

    我想记录用户的ip地址、referer和用户代理。在PHP中,我可以从以下变量中获取它们:$_SERVER['REMOTE_ADDR']$_SERVER['HTTP_REFERER']$_SERVER['HTTP_USER_AGENT']如何在ruby​​中获取它们? 最佳答案 PHP嵌入在网络服务器中。Ruby是一种通用语言:如果您需要Web服务器上下文,则必须自己安装。幸运的是,这很容易。最简单的入门方法之一是使用Sinatra。安装gem:geminstallsinatra然后创建myapp.rb:require'sinatr

  9. ruby-on-rails - Ruby:强制 open-uri 返回 IPv4 地址 - 2

    在我们的Rails应用中,我们有一个ControllerAction,它打开一个外部URL,并将它作为JSON返回给我们的前端使用。今天,我收到以下错误:Errno::EAFNOSUPPORT:协议(protocol)不支持地址族-socket(2)我们的开发人员建议,如果地址同时返回IPv6响应和IPv4响应,这就是错误。我们不支持IPv6,所以这可以解释它。这是触发请求的方法:defmedline_responseopen("http://apps.nlm.nih.gov/medlineplus/services/mpconnect_service.cfm?mainSearchCr

  10. ruby - 邮件 gem 。将收件人显示名称和地址提取为单独的值 - 2

    使用邮件gem(即Rails+ActionMailer),是否有一种干净的方法来获取收件人的显示名称?我可以通过以下方式获取地址:mail.to.first我可以通过以下方式获取格式化的显示名称+地址:mail.header_fields.select{|f|f.name=="To"}.first.to_s但是我怎样才能得到显示名称部分(即在和>之前)。我知道有人会建议使用正则表达式,但这不是我想要的,因为我随后必须解析任何编码,而这正是Mailgem可能已经做的事情。我是一个流行的PHPMailer库的作者,我知道在之前假设位的缺陷。和>是人类可读的,在标题中,当8位字符开始发挥作用

随机推荐