我编写了一个动态数据库驱动、面向对象的网站,带有管理前端等。我想添加一个功能,客户可以将项目保存为“收藏夹”,而无需创建帐户和登录,以便稍后返回它们,但我不知道到底该怎么做......我看到三个选项:
选项 1 的问题是我对 IP 地址了解不多 - 我爸爸认为它们是独一无二的,但我知道人们在使用此类系统时遇到过问题。
1和2的问题是账户还没有向客户开放——目前只有管理员可以登录。改变它应该很容易(不超过上午或下午的工作),但我也必须实现用户组。
选项 3 的问题是,如果用户 A 保存了一个名为“我的收藏夹”的收藏夹列表,然后用户 B 尝试以该名称保存列表但遭到拒绝,则用户 B 将能够访问用户保存的列表A 因为他们现在知道它已经存在。解决此问题的一个解决方案是使用密码保护列表,但要付出所有这些努力,我也可以实施选项 2。
当然我总是可以使用选项 4;如果有人可以提出比上述任何选项更好的解决方案,请使用替代方案。
那么以前有人做过这样的事情吗?如果是这样,你是怎么做的?您推荐(或不推荐)什么?
我目前使用 WFAPI 从 C# 确定 Citrix 会话的客户端 IP 地址
[StructLayout(LayoutKind.Sequential)]
internal struct WF_CLIENT_ADDRESS {
public int AddressFamily;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
public byte[] Address;
}
[DllImport("WFAPI.dll", EntryPoint = "WFFreeMemory")]
private static extern void WFFreeMemory(IntPtr pMemory);
[DllImport("WFAPI.dll", EntryPoint = "WFQuerySessionInformationA")]
private static extern bool WFQuerySessionInformation(IntPtr hServer,
int iSessionId, int infotype, out IntPtr ppBuffer, out int pBytesReturned);
const int ClientAddress = 14;
const int CurrentSession = -1;
static readonly IntPtr CurrentServer = IntPtr.Zero;
public static string GetClientAddress() {
IntPtr addr;
int returned; …Run Code Online (Sandbox Code Playgroud) 我想获取登录系统(Web应用程序)的用户的IP地址和MAC地址。我正在使用这些代码行
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
Run Code Online (Sandbox Code Playgroud)
我正在使用这种方法来获取MAC地址,但问题是我正在获取计算机所有适配器的MAC地址。
我如何知道哪一个是正确的?如何获取连接到我的网站的设备的正确 MAC 地址?
以及如何获取适配器的IP。
当我在我的电脑上尝试时,它提供了 8 个适配器和 8 个 MAC 地址
我正在我的电脑上尝试,我有一个连接到 IntraNet 的有线连接,以及一个连接到互联网的无线连接。
[抱歉发布非编程主题,但我认为这篇文章会帮助有需要的人。]
我正在尝试在 PC 和 Mac 之间发挥协同作用。
我正在使用自动配置和所有默认设置。它与 mac 作为服务器完美配合。
但是,当 PC 是服务器而 mac 是客户端时,PC 首先检测到 zeroconf 客户端,然后只是坐在那里没有更多的日志消息。同时,mac客户端一直“超时”,永不连接。
我检查过的东西:
我有一台名为 Ian-Mac.local 的 Macbook (10.11),IP 地址为 192.168.0.6。
我有一台名为 Ian-PC 的 Windows 10 笔记本电脑,其中列出了 5 个不同的 IP 地址。默认是 192.168.56.1
这是来自 PC 的调试级日志:
[2016-12-06T12:04:49] NOTE: started server, waiting for clients
[2016-12-06T12:04:49] DEBUG: event queue is ready
[2016-12-06T12:04:49] DEBUG: add pending …Run Code Online (Sandbox Code Playgroud) 我需要将 IPv6 地址转换为 IPv4 地址。为此,我使用了pedmillon 对相关问题的回答中的代码:
$ipv6 = $_SERVER['REMOTE_ADDR'];
$ipv4 = hexdec(substr($ipv6, 0, 2)). "." . hexdec(substr($ipv6, 2, 2)). "." . hexdec(substr($ipv6, 5, 2)). "." . hexdec(substr($ipv6, 7, 2));
Run Code Online (Sandbox Code Playgroud)
我在我的本地主机中尝试过,::1 被转换为 0.1.0.0。此代码是否正常工作?
我相信它应该显示 127.0.0.1 而不是 0.1.0.0。
我在 Ubuntu 16.04 上的 Nginx 后面托管了一个 asp.net net core 2.0 应用程序。
我的设置看起来像这样:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl on;
...
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-Proto-Version $http2;
client_max_body_size 32m;
keepalive_timeout 200;
send_timeout 20;
client_body_timeout 50;
}
}
Run Code Online (Sandbox Code Playgroud)
我也有这些设置 Startup.cs
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor |
ForwardedHeaders.XForwardedProto
});
Run Code Online (Sandbox Code Playgroud)
但仍然每次当我试图得到HttpContext.Connection.RemoteIpAddress它的回报127.0.0.1
我应该怎么做才能解决这个问题并获得真实的 IP 地址?
我有一个 URL 列表,我正在尝试使用该列表构建防火墙日志。例子:
$ cat urls.csv
a.com
Run Code Online (Sandbox Code Playgroud)
我知道如何使用直接提到的 IP 作为变量来构建日志。
$ cat processor.sh
#!/bin/bash
filename="$1"
while read -r line
do
URLS="$line"
IP='10.109.1.1'
today_date=`date +%d/%b/%Y`
conact_1=" - - ["
concat_2=":00:00:00 +0000] "
date_concat=$conact_1$today_date$concat_2
GET='"GET '
protocol=' HTTP/1.1" 304 0 304 0 0 0 655 456 645 368 0'
final_url=$IP$conact_1$today_date$concat_2$GET$URLS$protocol
echo $final_url
done < "$filename"
Run Code Online (Sandbox Code Playgroud)
结果:
$ bash processor.sh urls.csv
10.109.1.1 - - [22/Jul/2018:00:00:00 +0000] "GET a.com HTTP/1.1" 304 0 304 0 0 0 655 456 645 368 0
Run Code Online (Sandbox Code Playgroud)
现在,如果我有一个50 or …
我正在尝试在给定 IP 地址子网的情况下生成随机 IP 地址。有很多资源可用于生成随机 IP,但我要求它从特定子网内生成。
我使用了一个名为netmask的 npm 模块- 但是实现绝对不优雅。任何人都可以为此提供一些巧妙的指针吗?
var netmask = require("netmask").Netmask
var block = new netmask('10.0.0.0/24')
console.log(block) // gives block details
var blockSize = block.size - 1 ;
var randomIndex = Math.floor(Math.random() * blockSize ) +1; // generate a random number less than the size of the block
console.log("randomIndex is: " + randomIndex);
block.forEach(function(ip, long, index){
if(index == randomIndex){
console.log('IP: ' + ip)
console.log('INDEX: ' + index)
// cannot break! this is a forEach :( …Run Code Online (Sandbox Code Playgroud) 我只想在 Windows 的 Anaconda Powershell 中获取我的 Ip 地址的输出。
curl https://ipinfo.io/ip
Run Code Online (Sandbox Code Playgroud)
给了我以下内容:
StatusCode : 200
StatusDescription : OK
Content : 22.031.123.456
RawContent : HTTP/...
...
...
...
...
Content-Type: text/html; charset=utf-8
Date: ...
Via:...
Forms : {}
Headers : {[..., *], [...], [...],
[..., ...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : ...
RawContentLength : ...
Run Code Online (Sandbox Code Playgroud)
如您所见,“内容”显示了我的 IP 地址。但是如果没有任何其他信息,我无法获得 IP 地址。
注意:“curl api.ipify.org”和“curl ipinfo.io/ip”和其他人正在做完全相同的事情。
ip-address ×10
c# ×2
ipv4 ×2
.net ×1
anaconda ×1
asp.net ×1
asp.net-core ×1
bash ×1
citrix ×1
curl ×1
dns ×1
favorites ×1
http2 ×1
ip ×1
iphone ×1
ipv6 ×1
javascript ×1
mac-address ×1
nginx ×1
npm ×1
objective-c ×1
php ×1
powershell ×1
shell ×1
subnet ×1
vb.net ×1
virtualbox ×1
windows ×1