Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.www.php > #20823 > unrolled thread

Controllare se l'indirizzo IP dell'utente ricavato con $_SERVER["REMOTE_ADDR"] è presente in un array ricavato mediante il parsing di un file .txt

Started byMarco <marcosol@tiscali.it>
First post2016-05-22 03:27 -0700
Last post2016-05-22 16:57 +0000
Articles 4 — 4 participants

Back to article view | Back to it.comp.www.php


Contents

  Controllare se l'indirizzo IP dell'utente ricavato con $_SERVER["REMOTE_ADDR"] è presente in un array ricavato mediante il parsing di un file .txt Marco <marcosol@tiscali.it> - 2016-05-22 03:27 -0700
    Re: Controllare se l'indirizzo IP dell'utente ricavato con $_SERVER["REMOTE_ADDR"] è presente in un array ricavato mediante il parsing di un file .txt fmigliori <fmigliori@gmail.com> - 2016-05-22 05:48 -0700
    Re: Controllare se l'indirizzo IP dell'utente ricavato con $ SERVER["REMOTE ADDR"] è presente in un array ricavato mediante il parsing di un file .txt Alex <tommaso5ita@yahoo.it> - 2016-05-22 17:25 +0200
    Re: Controllare se l'indirizzo IP dell'utente ricavato con $_SERVER["REMOTE_ADDR"] è presente in un array ricavato mediante il parsing di un file .txt Alessandro Pellizzari <shuriken@amiran.it> - 2016-05-22 16:57 +0000

#20823 — Controllare se l'indirizzo IP dell'utente ricavato con $_SERVER["REMOTE_ADDR"] è presente in un array ricavato mediante il parsing di un file .txt

FromMarco <marcosol@tiscali.it>
Date2016-05-22 03:27 -0700
SubjectControllare se l'indirizzo IP dell'utente ricavato con $_SERVER["REMOTE_ADDR"] è presente in un array ricavato mediante il parsing di un file .txt
Message-ID<e4f518a5-1234-4f5b-90d5-5414db7873b0@googlegroups.com>
Salve, sono alle prese con un problema apparentemente irrisolvibile.
La funzione di confronto che sto utilizzando è in_array().

// Prima recupero l'IP dell'utente e lo metto in una variabile:

$ip = $_SERVER["REMOTE_ADDR"];

// Poi faccio il parsing del file e mi creo l'array:

$filelog = "votivalidi.txt";
$txt_file = file_get_contents($filelog);
$txt_file = "\r\n" . $txt_file;
$txt_file = utf8_encode(trim($txt_file));
$rigas = explode("\r\n", $txt_file);
$eip = array();
								
foreach($rigas as $riga => $dat) {
										
$datu = explode("|", $dat , 6);
						
if ((strtotime($dat[2])) > (strtotime($datapiuora))) {
																    	
$eip[] = $dat[3];
										
}
										
}

// Elimino i valori duplicati:
			
$eip = array_unique($eip);

// Faccio il confronto:

if (in_array($ip, $eip) {

// Nego l'autorizzazione al voto

} else {

// Concedo l'autorizzazione al voto

}

Ho verificato il contenuto dell'array $eip ed è tutto a posto. Ma il confronto con in_array è sempre False. Posso solo pensare che il problema dipenda dal tipo di dati che andrebbero convertiti. Integer? Long? String?

Qualcuno sa aiutarmi???

[toc] | [next] | [standalone]


#20826

Fromfmigliori <fmigliori@gmail.com>
Date2016-05-22 05:48 -0700
Message-ID<50a68c38-f936-42f6-a0b5-25fb27b79e46@googlegroups.com>
In reply to#20823
Il giorno domenica 22 maggio 2016 12:27:12 UTC+2, Marco ha scritto:
> Salve, sono alle prese con un problema apparentemente irrisolvibile.
> La funzione di confronto che sto utilizzando è in_array().
> 
> // Prima recupero l'IP dell'utente e lo metto in una variabile:
> 
> $ip = $_SERVER["REMOTE_ADDR"];
> 
> // Poi faccio il parsing del file e mi creo l'array:
> 
> $filelog = "votivalidi.txt";
> $txt_file = file_get_contents($filelog);
> $txt_file = "\r\n" . $txt_file;
> $txt_file = utf8_encode(trim($txt_file));
> $rigas = explode("\r\n", $txt_file);
> $eip = array();
> 								
> foreach($rigas as $riga => $dat) {
> 										
> $datu = explode("|", $dat , 6);
> 						
> if ((strtotime($dat[2])) > (strtotime($datapiuora))) {
> 																    	
> $eip[] = $dat[3];
> 										
> }
> 										
> }
> 
> // Elimino i valori duplicati:
> 			
> $eip = array_unique($eip);
> 
> // Faccio il confronto:
> 
> if (in_array($ip, $eip) {
> 
> // Nego l'autorizzazione al voto
> 
> } else {
> 
> // Concedo l'autorizzazione al voto
> 
> }
> 
> Ho verificato il contenuto dell'array $eip ed è tutto a posto. Ma il confronto con in_array è sempre False. Posso solo pensare che il problema dipenda dal tipo di dati che andrebbero convertiti. Integer? Long? String?
> 
> Qualcuno sa aiutarmi???

Per vedere che tipi sono puoi fare var_dump($ip, $eip);
Se il formato di questo documento è una sequenza di ip separati da /r/n io probabilmente avrei usato uno strpos($txtfile,$ip)
Un consiglio che ti do anche se è evidente che il tuo non è un codice definitivo: dopo l'explode fai un unset di $txt_file.

[toc] | [prev] | [next] | [standalone]


#20827 — Re: Controllare se l'indirizzo IP dell'utente ricavato con $ SERVER["REMOTE ADDR"] è presente in un array ricavato mediante il parsing di un file .txt

FromAlex <tommaso5ita@yahoo.it>
Date2016-05-22 17:25 +0200
SubjectRe: Controllare se l'indirizzo IP dell'utente ricavato con $ SERVER["REMOTE ADDR"] è presente in un array ricavato mediante il parsing di un file .txt
Message-ID<nhsj17$24u1$1@adenine.netfront.net>
In reply to#20823
Marco ha detto questo domenica :
>
> if (in_array($ip, $eip) {
>

C'è un errore di dintassi qui, manca una parentesi

if (in_array($ip, $eip)) {

Se poi funziona non so.

bye

-- 
Alex

--- news://freenews.netfront.net/ - complaints: news@netfront.net ---

[toc] | [prev] | [next] | [standalone]


#20828

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2016-05-22 16:57 +0000
Message-ID<dqe6njFg79rU1@mid.individual.net>
In reply to#20823
Il Sun, 22 May 2016 03:27:11 -0700, Marco ha scritto:

> $filelog = "votivalidi.txt";
> $txt_file = file_get_contents($filelog);
> $txt_file = "\r\n" . $txt_file;
> $txt_file = utf8_encode(trim($txt_file));

Cioè, prima aggiungi un \r\n all'inizio della stringa e poi lo trimmi 
subito? E a cosa ti serve utf8_encode?

> $rigas = explode("\r\n", $txt_file);
> $eip = array();
> 								
> foreach($rigas as $riga => $dat) {
> $datu = explode("|", $dat , 6);

Questo mi puzza tanto di file csv ma con i | al posto delle virgole.

Puoi usare direttamente

$file = fopen('votivalidi.txt','r');
while (false !== ($dat = fgetcsv($file, 0, '|')) {

> 						
> if ((strtotime($dat[2])) > (strtotime($datapiuora))) {
> $eip[] = $dat[3];

Probabilmente qui ti conviene fare un trim($dat[3]).

Meglio ancora, fai

$eip[trim($dat[3])] = true;
										
> }
> }
> $eip = array_unique($eip);
> if (in_array($ip, $eip) {

Così puoi evitare l'array_unique e qui puoi fare

if (array_key_exists($ip, $eip)) {

> Ho verificato il contenuto dell'array $eip ed è tutto a posto. Ma il
> confronto con in_array è sempre False. Posso solo pensare che il
> problema dipenda dal tipo di dati che andrebbero convertiti. Integer?
> Long? String?

Se sono IP dovrebbero essere già stringhe. Il problema potrebbe essere da 
un'altra parte. Per esempio nel (mancato) trim, o in caratteri invisibili 
nel file.

Bye.

[toc] | [prev] | [standalone]


Back to top | Article view | it.comp.www.php


csiph-web