Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.www.php > #20823 > unrolled thread
| Started by | Marco <marcosol@tiscali.it> |
|---|---|
| First post | 2016-05-22 03:27 -0700 |
| Last post | 2016-05-22 16:57 +0000 |
| Articles | 4 — 4 participants |
Back to article view | Back to it.comp.www.php
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
| From | Marco <marcosol@tiscali.it> |
|---|---|
| Date | 2016-05-22 03:27 -0700 |
| Subject | 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 | <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]
| From | fmigliori <fmigliori@gmail.com> |
|---|---|
| Date | 2016-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]
| From | Alex <tommaso5ita@yahoo.it> |
|---|---|
| Date | 2016-05-22 17:25 +0200 |
| Subject | 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 |
| 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]
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Date | 2016-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