function getIp(){
$onlineip='';
if(getenv('HTTP_CLIENT_IP')&&strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown')){
$onlineip=getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')&&strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown')){
$onlineip=getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'),'unknown')){
$onlineip=getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')){
$onlineip=$_SERVER['REMOTE_ADDR'];
}
return $onlineip;
}
$onlineip = getIp();
$ipinfo=json_decode(file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$onlineip),true);//将API的json格式解码保存到ipinfo变量
?>
IP: | |
国家: | |
省份: | |
城市: | |
县: | |
地区: | |
ISP: |
我这么写的,可以查到IP,但是只能查到一次。以后别的访客来查,显示的还是第一个访客的来源。
用CMS弄的,访客来源没有建立相应数据表。
问问是代码的问题呢,还是没建立相应的数据表。
回复讨论(解决方案)
你说的别的访客和你用的是不同的网络么?如果是同一个公网IP出去的两个人,访问到的看起来就是同一个IP啊。如果你的服务在外网,发给你的其它网络环境的朋友看一下,看是否也这样。
你这段代码单独拿出来也可以测试啊,与CMS没啥关系,而且你这是从
http://ip.taobao.com/service/getIpInfo.php
取的数据,就这个示例来说,不需要建什么表吧。
表现是不是所有的访问都是同意来源呢? 使用的web服务器是否中间经过了代理?
你说的别的访客和你用的是不同的网络么?如果是同一个公网IP出去的两个人,访问到的看起来就是同一个IP啊。如果你的服务在外网,发给你的其它网络环境的朋友看一下,看是否也这样。
你这段代码单独拿出来也可以测试啊,与CMS没啥关系,而且你这是从
http://ip.taobao.com/service/getIpInfo.php
取的数据,就这个示例来说,不需要建什么表吧。
别的访客不是同一个公网的,发给外地的朋友测试过了。显示的是我的IP
获取ip那个方法本来就不严谨,没想到一直流传到现在还有人用
获取ip那个方法本来就不严谨,没想到一直流传到现在还有人用
求个严谨点的
你先只取 $_SERVER['REMOTE_ADDR'] 试一下。
或者你自己应该找出来那段代码里最后生效的是哪个变量,就找到问题所在了。而且这和你自己的服务器网络结构也是有关系的。你应该在PHP手册里Predefined Variables一节搞懂那些环境变量的含义先。不应该直接把一段代码这么丢出来,就算别人帮你解决了,这块对你来说还是盲点。
说的好,解决了,是因为我网页是静态的,现在改成动态的,测试成功了。

PHP dan Python masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1.Php sesuai untuk pembangunan web, dengan sintaks mudah dan kecekapan pelaksanaan yang tinggi. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan yang kaya.

PHP tidak mati, tetapi sentiasa menyesuaikan diri dan berkembang. 1) PHP telah menjalani beberapa lelaran versi sejak tahun 1994 untuk menyesuaikan diri dengan trend teknologi baru. 2) Ia kini digunakan secara meluas dalam e-dagang, sistem pengurusan kandungan dan bidang lain. 3) Php8 memperkenalkan pengkompil JIT dan fungsi lain untuk meningkatkan prestasi dan pemodenan. 4) Gunakan OPCACHE dan ikut piawaian PSR-12 untuk mengoptimumkan prestasi dan kualiti kod.

Masa depan PHP akan dicapai dengan menyesuaikan diri dengan trend teknologi baru dan memperkenalkan ciri -ciri inovatif: 1) menyesuaikan diri dengan pengkomputeran awan, kontena dan seni bina microservice, menyokong Docker dan Kubernetes; 2) memperkenalkan pengkompil JIT dan jenis penghitungan untuk meningkatkan prestasi dan kecekapan pemprosesan data; 3) Berterusan mengoptimumkan prestasi dan mempromosikan amalan terbaik.

Dalam PHP, sifat sesuai untuk situasi di mana penggunaan semula kaedah diperlukan tetapi tidak sesuai untuk warisan. 1) Ciri membolehkan kaedah multiplexing dalam kelas untuk mengelakkan pelbagai kerumitan warisan. 2) Apabila menggunakan sifat, anda perlu memberi perhatian kepada konflik kaedah, yang dapat diselesaikan melalui alternatif dan sebagai kata kunci. 3) Tua yang berlebihan harus dielakkan dan tanggungjawab tunggalnya harus dikekalkan untuk mengoptimumkan prestasi dan meningkatkan pemeliharaan kod.

Kontena Suntikan Ketergantungan (DIC) adalah alat yang menguruskan dan menyediakan kebergantungan objek untuk digunakan dalam projek PHP. Manfaat utama DIC termasuk: 1. Decoupling, membuat komponen bebas, dan kod itu mudah dikekalkan dan diuji; 2. Fleksibiliti, mudah untuk menggantikan atau mengubah suai kebergantungan; 3. Keseluruhan, mudah untuk menyuntik objek mengejek untuk ujian unit.

SplfixedArray adalah pelbagai saiz tetap dalam PHP, sesuai untuk senario di mana prestasi tinggi dan penggunaan memori yang rendah diperlukan. 1) Ia perlu menentukan saiz apabila membuat untuk mengelakkan overhead yang disebabkan oleh pelarasan dinamik. 2) Berdasarkan pelbagai bahasa C, secara langsung mengendalikan memori dan kelajuan akses cepat. 3) Sesuai untuk pemprosesan data berskala besar dan persekitaran sensitif memori, tetapi ia perlu digunakan dengan berhati-hati kerana saiznya tetap.

PHP mengendalikan fail muat naik melalui pembolehubah fail $ \ _. Kaedah untuk memastikan keselamatan termasuk: 1. Semak kesilapan muat naik, 2. Sahkan jenis dan saiz fail, 3. Mencegah penindasan fail, 4. Pindahkan fail ke lokasi storan tetap.

Dalam JavaScript, anda boleh menggunakan NullcoalescingOperator (??) dan NullcoalescingAssignmentOperator (?? =). 1.? Menerapkan semula operan pertama yang tidak berselisih atau tidak ditentukan. 2.?? Pengendali ini memudahkan logik kod, meningkatkan kebolehbacaan dan prestasi.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular