Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Problemi salvataggio IP in DB

    Ho creato un contatore di download che si appoggia ad un db. Nella tabella, tra le altre cose, vorrei inserire una colonna che registri l'IP dell'utente che per ultimo ha scaricato quel file.

    Perchè questo?
    Per evitare che l'utente, cliccando e ricliccando sul file faccia andare in orbita il contatore: ci sarà un controllo tramite script php che impedirà al contatore di aumentare nel caso in cui l'utente che clicca abbia lo stesso IP registrato per ultimo nel db.

    C'è un problema: lo script per il contatore lo avevo già, dovevo solo aggiungere questa parte relativa alla registrazione e confronto dell'IP.

    1) Che caratteristiche deve avere il campo ip nella tabella? Va bene VARCHAR 50 ?

    2) Questo è lo script che prima inseriva, incrementato, il nuovo valore del download e la data del download

    $query = "UPDATE download SET dlc = $dlc , data = $data WHERE id='$id'";

    Ma quando aggiungo la parte relativa all'IP addirittura il contatore non viene nemmeno più incrementato

    $query = "UPDATE download SET ip = $iput, dlc = $dlc , data = $data WHERE id='$id'";

    Dove $iput contiene l'ip dell'utente e viene precedentamente ricavata così: $iput = $_SERVER['REMOTE_ADDR'];

    Come dicevo, guardando poi la tabella, il campo IP resta sempre vuoto e improvvisamente nemmeno il contatore (dlc) viene più incrementato.

    Come mai? Da cosa dipende? Perchè lo script prosegue comunque correttamente?

    Grazie!

    ps: ovviamente manca la query viene eseguita!! E ovviamente so che manca la parte di controllo sull'ip dell'utente e quello registrato, ma mi sono accorto che non è quella la parte erronea, solo quella che ho scritto

  2. #2
    la query mi sembra corretta anche se l'averi scritta diversamente...
    Codice PHP:
    $query "UPDATE download SET ip='".$_SERVER['REMOTE_ADDR']."', dlc=dlc+1 , data='".$data."' WHERE id='".$id."'"
    perchè non posti il controllo di confronto sull'ip o cmq l'intero script visto che se l'ip ti resta vuoto nel db e perchè probabilmente la query non viene eseguita
    Planet Earth is blue and there's nothing I can do

  3. #3
    prova cosi
    codice:
    $query = "UPDATE download SET ip = '$iput', dlc = '$dlc' , data = '$data' WHERE id='$id';";
    ______________________________________

    Progresso Web.

  4. #4
    Ok, lo posto, ma sappiate che anche togliendo quest'ultimo il problema resta... il problema resta fino a quando non tolgo ip=$iput... sì, credo la query non venga eseguita, perchè associato all'aggiornamento dell'ip c'è pure l'aggiornamento del contatore, il quale non viene eseguito... ma non appare nessun messaggio d'errore. E, come ho detto, il problema c'è già anche senza controllo... non vorrei fosse un problema del campo 'ip' del db.

    <?php

    include("config.inc.php");

    setlocale(LC_TIME,'ita');
    $data = mktime(date('H'),date('i'),date('s'),date('m'),dat e('d'),date('Y'));

    $iput = $_SERVER['REMOTE_ADDR'];

    $db = mysql_connect($db_host, $db_user, $db_password);

    mysql_select_db($db_name, $db);

    $query = "SELECT id,link,dlc,ip FROM download WHERE idn='$idn'";
    $result = mysql_query($query, $db);

    $row = mysql_fetch_array($result);

    $link=$row["link"];
    $dlc=$row["dlc"]+1;
    $id=$row["id"];
    $ipld=$row["ip"];


    if ($ipld!=$iput) {
    $query = "UPDATE download SET dlc = $dlc , data = $data , ip = $iput WHERE id='$id'";
    mysql_query($query, $db);
    }

    header ("Location: $link");
    mysql_close($db);
    exit;

    ?>

    Spiegazione il campo id e idn contengono delle ID che io ho dato ai file. Il campo link contiene il link del file per lanciare il dl, il campo data la data dell'ultimo dl, ip dovrebbe tenere l'ip, dlc è il donwload counter. iput è l'ip dell'utente, ipld è l'ip del last download.

  5. #5
    Originariamente inviato da caruccis
    prova cosi
    codice:
    $query = "UPDATE download SET ip = ' $iput' , dlc = '$dlc' , data = '$data' WHERE id='$id';";
    Apposto! Funziona! grazie... ma posso chiedere perchè finchè aveva solo 2 variabili da immettere c'è riuscito anche senza apici, con la terza ho dovuto inserirli???!?

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.