Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Controllo IP con PHP

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    8

    Controllo IP con PHP

    Salve a tutti avrei un problema con questo codice:
    Codice PHP:
    <?php
    $filename 
    'prova.txt';
    $ip $_SERVER['REMOTE_ADDR'];

    if(
    file_exists($filename) == 1)
    {
    $fp fopen($filename'r');
    $lines file($filename);

    echo 
    $lines[1];
    echo 
    "<br>";
    echo 
    $ip;
    echo 
    "<br>";
    echo 
    $_SERVER['REMOTE_ADDR'];
    echo 
    "<br>";

    if (
    $_SERVER['REMOTE_ADDR'] == $lines[1]) 
    { echo 
    "si"; }
    if (
    $ip == $lines[1])
    { echo 
    "si"; }
    if(
    strcmp($_SERVER['REMOTE_ADDR'], $lines[1]) == 1)
    { echo 
    "si"; }
    if(
    strcmp($ip == $lines[1]) == 1){ echo "si"; }
    fclose($fp);
    }
    ?>
    praticamente dovrebbe verificare se l'IP di colui che attiva questo script esiste già in un file di testo "prova.txt" già contenente l'IP. Ma facendo i controlli in tutti quei 4 modi, il "si" non viene mai fuori, ovvero non risultano mai uguali... Il file contiene sicuramente lo stesso IP infatti nel controllo visivo
    echo $lines[1];echo "<br>";
    echo $ip;
    echo "<br>";
    echo $_SERVER['REMOTE_ADDR'];
    echo "<br>";
    appaiono tutti uguali...

    Il file contiene circa una decina di righe con lo stesso IP già salvato
    $lines[0],$lines[1],...,$lines[i]
    è sempre uguale.

    Ed un banale controllo
    Codice PHP:
    if($ip == $_SERVER['REMOTE_ADDR']) 
    ovviamente funziona...

    Come posso fare?
    Talk is cheap. Show me the code. [Linus B. Torvalds]

  2. #2
    " strcmp() restituisce un valore positivo quando la stringa passata come primo parametro è più grande rispetto al secondo e un valore negativo quando è più piccolo. Se entrambe le stringhe sono uguali, strcmp()restituisce 0 "
    così sembra funzinare:
    <?php


    $filename = 'prova.txt';
    $ip = $_SERVER['REMOTE_ADDR'];


    if(file_exists($filename) == 1)
    {


    $ip = $_SERVER['REMOTE_ADDR'];
    $fp = fopen($filename, 'r');
    $lines = file($filename);

    echo $ip.' - '.$lines[0];
    echo "<br>";


    if ($ip === $lines[0]) {
    echo "si1<br/>";
    }
    if ($ip === $lines[0]){
    echo "si2<br/>";
    }
    if (strcmp($ip, $lines[0]) === 0){
    echo "si3<br/>";
    }
    if(strcmp($ip, $lines[0]) === 0){
    echo "si4";
    }
    fclose($fp);
    }
    ?>
    attenzione che nel file prova.txt, non ci siano spazi.
    Ultima modifica di mirkobellavita; 01-06-2015 a 14:29

  3. #3
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    non ho capito una cosa: il file "prova.txt" contiene i dati in questo modo?
    codice:
    prima riga
    ip1,ip2,ip3,ipN
    se si, basta usare strpos() per gestire la ricerca e trovare il valore

    se no, stai sbagliando perché prendi sempre e solo una riga del file

  4. #4
    $lines è un array che se nn ho capito male contiene ogni riga del file prova.txt nel codice sopra effettivamente prende solo la prima riga ( $lines[0] ) dovresti fare un controllo su tutte le righe del file prova.txt

  5. #5
    tipo così?
    <?php


    $filename = 'prova.txt';
    $ip = $_SERVER['REMOTE_ADDR'];
    if(file_exists($filename) == 1)
    {
    $ip = $_SERVER['REMOTE_ADDR'];
    $fp = fopen($filename, 'r');
    $lines = file($filename);
    $lung = count($lines);
    //echo $lung;
    for($i=0; $i <= $lung; $i++){
    //var_dump(trim($lines[$i]));
    if(trim($lines[$i]) === $ip){
    echo'ok';
    }
    }
    fclose($fp);
    }
    ?>

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    8
    Ringrazio entrambi, come ho spiegato i vari $lines[0],$lines[1],... ecc... contengono tutti lo stesso IP e gli IP sono salvati come:
    Riga1 - IP
    Riga2 - IP
    Riga3 - IP
    ecc...


    Ma il problema era più semplice, come diceva mirkobellavita, il fwrite() aggiungeva due spazi ad ogni IP che salvava nella riga di testo di "prova.txt"
    Ora quindi posso risolvere o con substr() o, come diceva clasku, con strpos()


    Grazie ancora ad entrambi!
    Talk is cheap. Show me the code. [Linus B. Torvalds]

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    8
    Ho visto ora il ciclo, che stava già, ma il codice che ho usato era solo una prova. E l'ottimo consiglio di usare trim().
    Ancora grazie mille, a presto
    Talk is cheap. Show me the code. [Linus B. Torvalds]

  8. #8
    di nulla! da autodidatta che sono....ci si prova!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.