Visualizzazione risultati 1 fino 25 di 25

Discussione: Ip in php cambia?

  1. #1
    Guest

    Predefinito Ip in php cambia?

    ciao a tt, una volta, il gentilissimo funcool, mi fece uno script che bloccava un ip se tentava di accedere più di una volta alla pagina, ed è il seguente:
    Codice PHP:
    <?php
    $ipok
    =true;
    $file=file("ip.txt");
    for(
    $i=0;$i<count($file);$i++)
    if (
    $_SERVER['REMOTE_ADDR']==trim($file[$i]))
    $ipok=false;
    if (
    $ipok) {
    echo
    "risposta";
    $fp=fopen("ip.txt","a");
    fputs($fp,$_SERVER['REMOTE_ADDR']."\n");
    fclose($fp);
    }
    else {
    echo
    "Sorry: hai già effettuato le tue tre domande!";
    }
    ?>
    Ma solo ora mi sono accorto di un errore..xkè il mio ip varia? cioè cambiano le ultime due cifre, il mio ip è:
    xxx.xx.xxx.xyy
    ma ogni volta che vado in quella pag mi cambia le yy con altri numeri...come posso fare? Cosa genera questo cambiamento di IP? grazie e ciao

  2. #2
    Guest

    Predefinito

    ogni volta che si spegne il modem o ci si disconnette da internet, il proprio indirizzo ip varia.

  3. #3
    Guest

    Unhappy

    Citazione Originalmente inviato da wrathchilds
    ogni volta che si spegne il modem o ci si disconnette da internet, il proprio indirizzo ip varia.
    ...il mio sito era basato, si può dire, solo sull'ip...nn c'è un qualcosa che lo sostituisca ma che sia unico a pc? grazie x la risposta...ciao

  4. #4
    L'avatar di SolitaryExplorer
    SolitaryExplorer non è connesso Utente storico
    Data registrazione
    10-08-2005
    Residenza
    Veneto
    Messaggi
    1,949

    Predefinito

    Usa i cookie ;)
    Non offro assistenza privata. / Se vuoi anche tu una userbar come queste, basta chiedere.


  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da SolitaryExplorer
    Usa i cookie ;)
    si ma rimane un problema: se l'utente nn li ha attivati? Per le sessioni invece l'argomento cambierebbe completamente xkè gli basterebbe uscire e rientrare per inserirne un altro...nn ci sn altre soluz? grazie x le risposte..ciao
    p.s. x sicurezza stò creando anke l'iscrizione...

  6. #6
    Guest

    Predefinito

    Improbabile che li abbia disattivati.
    E in quel caso gli imponi di abilitarli, altrimenti non lo fai continuare.


    Ciao!

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da debug
    Improbabile che li abbia disattivati.
    E in quel caso gli imponi di abilitarli, altrimenti non lo fai continuare.


    Ciao!
    Effettivamente hai ragione, infatti tutti i login che ti ricordano usano i cookies..quindi tutti hanno i cookie abilitati...ok! mi hai convinto, proverò ad usare i cookies...c'è sl un problema...io nn ho mai affrontato il biskotto, XD, provo a leggere qualcosa su php.net caso mai mi faccio senitere...ciao e grazie x le risposte
    EDIT: e se l'utente elimina i cookies? allora il problema rimane...
    Ultima modifica di NetSkin : 05-07-2007 alle ore 17.47.54

  8. #8
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Temo che purtroppo ogni sistema abbia i suoi pro e i suoi contro:
    - il cookie ti permette di mantenere traccia sui singoli computer, ma sono facilmente eludibili (disattivandoli o cancellandoli a fine operazione)
    - l'IP tecnicamente basterebbe ad identificarti, ma la maggior parte dei provider li assegna mediante protocollo DHCP (Dynamic Host Configuration Protocol), ovvero per un po' di tempo e poi si decide se rinnovarlo o darlo ad un altro
    - le sessioni sono sul lato del server, ma soffrono di problemi simili ai cookie, se non peggiori (diversamente dai cookie, hanno sempre una scadenza limitata a pochi minuti).

    Qui sopra te le ho scritte in ordine di "resistenza", se ti può servire come idea...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  9. #9
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    aggiungo: puoi usare un piccolo flash per salvare informazioni sulla macchina client, ma come per i cookie, possono semplicemente essere cancellate - forse meno gente lo sa, però è più complesso per te

    per le sessioni, puoi anche farle durare anni, ma l'id è comunque memorizzato in un cookie - perciò soffrono esattamente degli stessi problemi dei biscotti

    (edit: uhm, dementialsite, non è proprio dhcp quello che assegna l'ip quando ti connetti...)
    Ultima modifica di dreadnaut : 05-07-2007 alle ore 18.36.37

  10. #10
    Guest

    Predefinito

    Vabbè...diciamo che nn c'è proprio un modo sicuro ed efficace, xò penso di averne trovato uno:
    faccio registrare l'utente e poi quando invia il nome del personaggio viene creato un file txt col suo nome utente, e lo metto in sola lettura, in modo che dopo averlo fatto una volta nn può più...che ne pensate? va bene o c'è un contro? grazie ancora delle risposte...ciao

  11. #11
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    if (file_exists(...)) ... forse è un po' più pulito del mettere in sola lettura

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut
    if (file_exists(...)) ... forse è un po' più pulito del mettere in sola lettura
    è un idea thx per le risposte...avrei però un problema relativo all'iscrizione...
    Per prima cosa ogni mio progetto è senza sql, quindi addio agli script registrazioni con sql, stò creando uno script registrazione così:
    dopo aver compilato il form lo script crea in una cartella(users) un file col nome utente e dentro ci scrive:
    Codice PHP:
    <?php
    $username
    ='nick';
    $password='pass';
    ecc..
    ?>
    e poi dovrei fare che nella pagina di login include tutte le pagine nella cartella users e controlla quindi se c'è quell'user e quella pass... e poi ne apre una sessione. Mi blocco però nel momento in cui devo includere tutti i file della cartella..ho provato così ma niente..:
    Codice PHP:
    <?php
    $dir
    = "./user/";
    $path = opendir($dir);
    while(
    false!==($file=readdir($path))){

    if(
    $file!="." && $file!=".."){

    include(
    '$file');
    }
    }
    closedir($path); //chiudo la cartella
    session_start();
    if(
    $_POST['username']==$username && $_POST['password']==$password) {

    $_SESSION['username']=$username;
    $_SESSION['password']=$password;
    echo
    "</p><p style='visibility:normal;'>Login eseguito con successo, adesso si può amministrare il sito dai rispettivi link!</p><p style='visibility:hidden;'>";
    }else{
    echo
    "</p><p style='visibility:normal;'>Errore Username o Password errati!</p><p style='visibility:hidden;'>";
    }
    ?>
    dov'è che sbaglio??? grazie x gli aiuti..ciao

  13. #13
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    perché la gente continua ad usare opendir ?!? glob glob glob

    un include di massa non è una cosa bella dai. perché non salvare i dati dentro dei file normali (ini? -> parse_ini_file) e poi leggerli?

    Puoi scegliere fra fare un file solo per tutti gli utenti
    Codice:
    elenco.txt
    user1 = password1
    user2 = password2
    ...
    oppure fare un file per utente, e magari metterci dentro anche altre informazioni
    Codice:
    username.txt
    password = pass
    nome = Nome
    email = email@email.email
    ...
    poi carichi e controlli una variabile sola, $elenco['username'] oppure $utente['password']

    edit: uhm oppure
    Codice:
    elenco.txt
    [user1]
    password = dfdasfdf
    email = dfasdffa
    
    [user2]
    password = dfdasfdf
    email = dfasdffa
    
    ...
    e poi controlli $elenco['username']['password']
    Ultima modifica di dreadnaut : 05-07-2007 alle ore 20.22.23

  14. #14
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut
    perché la gente continua ad usare opendir ?!? glob glob glob

    un include di massa non è una cosa bella dai. perché non salvare i dati dentro dei file normali (ini? -> parse_ini_file) e poi leggerli?

    Puoi scegliere fra fare un file solo per tutti gli utenti
    Codice:
    elenco.txt
    user1 = password1
    user2 = password2
    ...
    oppure fare un file per utente, e magari metterci dentro anche altre informazioni
    Codice:
    username.txt
    password = pass
    nome = Nome
    email = email@email.email
    ...
    preferirei usare un file per tutti, user.php , ma come lo faccio?!? Sono rimasto indietro..tanto indietro..queste cose "nuove" proprio nn le capisco..thx x le risposte..ma come lo faccio tutto in user.php? ancora grazie e ciao

  15. #15
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    grum, user.php non mi piace, ma vabbeh
    Codice:
    <?php $utenti = array(); ?>
    <? $utenti['username1'] = 'password1'; ?>
    <? $utenti['username2'] = 'password2'; ?>
    e per aggiungere un utente basta che appendi una riga al file.

    Cmq non è nulla di troppo nuovo, altrimenti ti consiglierei di incapsulare l'accesso agli utenti in una bella classe e vivere felice, ma mi sembra troppo lungo da spiegare
    Ultima modifica di dreadnaut : 05-07-2007 alle ore 21.20.37

  16. #16
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut
    Codice:
    <?php $utenti = array(); ?>
    <? $utenti['username1'] = 'password1'; ?>
    <? $utenti['username2'] = 'password2'; ?>
    Mi piace ..mentre come faccio a controllare nel login tra gli array? Cioè prima la pag log-in era:
    Codice PHP:
    <?php
    session_start
    ();
    if(
    $_POST['username']==$username && $_POST['password']==$password) {

    $_SESSION['username']=$username;
    $_SESSION['password']=$password;
    echo
    "Login eseguito con successo";
    }else{
    echo
    "Errore Username o Password errati!";
    }
    ?>
    ma ora come dovrebbe essere? grazie ankora sia per la tua pazienza che per le tue risposte..ciao

  17. #17
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    print_r( $utenti ); e scoprilo da te

  18. #18
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut
    print_r( $utenti ); e scoprilo da te
    nn ci riesco...ho provato con:
    Codice PHP:
    <?php
    session_start
    ();
    include(
    'user.php');
    print_r( $utenti );
    if(
    $_POST['username']==$username && $_POST['password']==$password) {
    $_SESSION['username']=$username;
    $_SESSION['password']=$password;
    echo
    "Login eseguito con successo";
    }else{
    echo
    "Errore Username o Password errati!";
    }
    ?>
    ma niente... dov'è che ho commesso l'orrore?!? ciao

  19. #19
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Ma.. un pensiero mi viene in mente...
    sei arrivato alla considerazione più giusta senza dubbio, ovvero che l'unico modo per far sì che un "utente" voti una sola volta entro un tot tempo è che questo sia un utente registrato (vedi i sondaggi nei forum)..
    ma è -ahimé- anche vero che:
    chi vieta ad una stessa persona fisica di registrarsi uno o più account e votare più volte per quanti account ha aperto?
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  20. #20
    Guest

    Predefinito

    Citazione Originalmente inviato da heracleum
    Ma.. un pensiero mi viene in mente...
    sei arrivato alla considerazione più giusta senza dubbio, ovvero che l'unico modo per far sì che un "utente" voti una sola volta entro un tot tempo è che questo sia un utente registrato (vedi i sondaggi nei forum)..
    ma è -ahimé- anche vero che:
    chi vieta ad una stessa persona fisica di registrarsi uno o più account e votare più volte per quanti account ha aperto?
    Bhè, nessuno lo impedisce, però intendo fare come AV, cioè puoi avere quanti account desideri, ma ogniuno di questi deve avere una propria mail...ciao
    p.s. x quanto riguarda lo script x il login come posso fare? grazie ancora e ciao

  21. #21
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Codice PHP:
    <?php
    session_start
    ();
    include(
    "user.php");
    $login=false;
    while (list(
    $username,$password)=each($utenti)) {
    if(
    $_POST['username']==$username && $_POST['password']==$password) {
    $_SESSION['username']=$username;
    $_SESSION['password']=$password;
    $login=true;
    }
    }
    if (
    $login)
    echo
    "Login eseguito con successo";
    else{
    echo
    "Errore Username o Password errati!";
    }
    ?>
    Ultima modifica di funcool : 06-07-2007 alle ore 07.59.08
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  22. #22
    Guest

    Predefinito

    Citazione Originalmente inviato da funcool
    Codice PHP:
    <?php
    session_start
    ();
    include(
    "user.php");
    $login=false;
    while (list(
    $username,$password)=each($utenti)) {
    if(
    $_POST['username']==$username && $_POST['password']==$password) {
    $_SESSION['username']=$username;
    $_SESSION['password']=$password;
    $login=true;
    }
    }
    if (
    $login)
    echo
    "Login eseguito con successo";
    else{
    echo
    "Errore Username o Password errati!";
    }
    ?>
    thx 1000 a tt voi...ciao

  23. #23
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    belin funcool, che mi scrivi ?!? O_O mi fai un ciclo? aaaaargh
    L'array $utenti che esce da user.php è del tipo
    Codice:
    Array (
     'user1' => 'pass1',
     'user2' => 'pass2',
     ...
    );
    quindi per controllare il login è sufficiente
    Codice:
    // sarebbe più bello con un minimo di controllo sui valori che arrivano via $_POST eh :mrgreen:
    $login = is_set( $utenti[ $_POST['username'] ])
      && ( $utenti[$username] == $_POST['password'] );
    
    if ($login) {
      $_SESSION['username']=$_POST['username'];
      $_SESSION['password']=$utenti[ $_POST['username'] ]; 
      echo "successo";
    } else {
      echo "errore";
    }
    poi, meno importante, quella sintassi while ... list ... each è antiqua ed è stata sostituita da
    Codice:
     foreach ( $utenti as $username => $password ) {  ....  }
    e dopo il $login = true dell'if ci sarebbe stato -molto- bene un break; per evitare di ciclare su tutta la lista senza necessità.

  24. #24
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Citazione Originalmente inviato da dreadnaut
    belin funcool, che mi scrivi ?!? O_O mi fai un ciclo? aaaaargh
    All'inizio avevo letto male come fosse fatto l'array, quindi non avevo voglia di rifarlo tutto.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  25. #25
    Guest

    Predefinito

    io ho usato quello di funcool e funzionava perfettamente...ciao e grazie x gli aiuti

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •