• Consiglio Direttivo

    @ManuelHT said:

    Come potrei fare per fare in modo che YYY sia un valore in base al numero di votazioni?
    Cioè mettiamo che con 0 voti il valore sia 8, con 10 voti sia 9, con 20 sia 10 e così via fino ad arrivare ad un massimo di per esempio 100 voti il valore sia 24 px con 300 voti il valore sia sempre 24 px, cioè che oltre i 24 px non aumenti più?

    Ti basta impostare una serie di controlli del genere:
    [php]<?
    if ($array['voto']< 20 && $array['voto']>9)
    {
    $size=9;
    }
    else if ($array['voto']< 30 && $array['voto']>19)
    {
    $size=10;
    }
    else if (..........)
    ..............
    else
    {
    $size=8;
    }
    ?>

    <a href="xxx" style="font-size: <? echo $size; ?>px;">Sito</a>[/php]> ps: se si inserisce due volte uno stesso link mi da l errore di prima, quello del doppio link, solo che non è molto carino da vedere quindi come potrei mettere un messaggio di errore di tipo "Questo sito è gia stato inserito", " Questo link è gia stato inserito". o qualcosa del genere?Per farlo puoi verificare che già non esista quel link ovvero fai una select mettendo come clausola WHERE link='$link' e quindi a query eseguita controlli se il numero di righe è diverso da zero, quindi il link già esiste:
    [php]<?
    $sql="SELECT link FROM site WHERE link='$link'";
    $query=@mysql_query($sql) or die (mysql_error());

    $row=mysql_num_rows($query);
    if ($row!=0)
    {
    echo "Questo sito è già stato inserito";
    exit;
    }[/php]Ovviamente in questo caso non dovrai continuare con l'inserimento, per non aver il Duplicate Entry dal Db.
    Dovrai considerare anche che htt p://vvv.domain.ext e vvv.domain.ext saranno considerati differenti. 🙂


  • User

    Ho provato a fare l'update della votazione ma non funziona, non da errori però non mi fa l'update. Nel form ho messo questo:

    <form method="get" action="add-vote.php">
    <input type="submit" name="vote" value="Invia il voto per questo sito" />
    </form>
    ```e in add-vote-php ho messo
    

    <?
    $vote=htmlentities($_POST['vote'], ENT_QUOTES);
    $id=$_GET['id'];

    require_once ("config.php");

    $sql="UPDATE site SET vote='vote+1' WHERE id='$id'";
    ?>

    Come posso fare???
    
    Inoltre quel codice per controllare se un sito esiste già in quale file lo dovrei mettere???
    Grazie.

  • Consiglio Direttivo

    @ManuelHT said:

    Ho provato a fare l'update della votazione ma non funziona, non da errori però non mi fa l'update.
    Non ti prende l'id perché te non lo invii. 🙂
    Dal form così strutturato non c'è traccia di invio dell'id di riferimento, potresti semplicemente usare un hidden data:
    [html]<form method="post" action="add-vote.php">
    <input type="hidden" name="id" value="1" />
    <input type="submit" name="vote" value="Invia il voto per questo sito" />
    </form>[/html]Se non sei costretto cerca di usare sempre il metodo post. 😉

    [php]<?
    $id=$_POST['id'];

    require_once ("config.php");

    $sql="UPDATE site SET vote=vote+1 WHERE id='$id'";
    $query=@mysql_query($sql) or die (mysql_error());
    ?>[/php]> Inoltre quel codice per controllare se un sito esiste già in quale file lo dovrei mettere???Prima dell'insert o addirittura inglobarlo:
    [php]<?
    $name=htmlentities($_POST['name'], ENT_QUOTES);
    $link=htmlentities($_POST['link'], ENT_QUOTES);
    $description=htmlentities($_POST['description'], ENT_QUOTES);
    $email=htmlentities($_POST['email'], ENT_QUOTES);

    require_once ("config.php"); // includo il file di connessione al Db

    $sql="SELECT link FROM site WHERE link='$link'";
    $query=@mysql_query($sql) or die (mysql_error());

    $row=mysql_num_rows($query);
    if ($row!=0)
    {
    echo "Questo sito è già stato inserito";
    exit;
    }
    else
    {
    $sql="INSERT INTO site (name, link, description, email) VALUES ('$name', '$link', '$description', '$email')";
    $query=@mysql_query($sql) or die (mysql_error());

    }
    ?>[/php];)


  • User

    Okei ora funziona tutto alla perfezione, tranne una cosa: cioè che il form mi invia il voto ma il campo nascosto avendo value="1" me lo invia sempre sull ID 1. Come faccio a fare in modo che me lo invii all'ID da cui è stato inviato il voto?

    Il codice in totale è così:

    
    <?
    $id=$_GET['id'];
    require_once ("config.php");
    
    $sql="SELECT * FROM site WHERE id='$id'";
    $query=@mysql_query($sql) or die (mysql_error());
    //a questo punto associ ad un array il risultato della query e quindi cicli il contenuto
    while ($array=mysql_fetch_array($query))
    {
       echo "-<a href=\"".$array['link']."\">".$array['name']."</a>-"."<br />".$array['description']."<br />";
    }
    
    mysql_close($connessione);
    
    ?>
    
    <form method="post" action="add-vote.php">
    <input type="hidden" name="id" value="1" />
    <input type="submit" name="vote" value="Invia il voto per questo sito" />
    </form>
    
    
    

    E poi se volessi fare in modo che gli utenti possano votare una quantità X di volte ogni Y di tempo (per esempio 3 volte a settimana e per 3 siti diversi) come faccio?

    Grazie ancora...
    la realizzazione del mio progetto sembra sempre più vicina, anche se la strada è ancora lunga ed ho paura che la parte più difficile debba ancora arrivare.... 😞 😞 😞

    Comunque per la seconda parte dovrei riuscire ad arrangiarmi da solo perchè devo solo modificare degli script già esistenti....


  • Consiglio Direttivo

    @ManuelHT said:

    Come faccio a fare in modo che me lo invii all'ID da cui è stato inviato il voto?
    Ti basterà mettere al posto del value="1" l'id del sito. 🙂
    [php]<input type="hidden" name="id" value="<? echo $id; ?>" />[/php]> E poi se volessi fare in modo che gli utenti possano votare una quantità X di volte ogni Y di tempo (per esempio 3 volte a settimana e per 3 siti diversi) come faccio?

    Comunque per la seconda parte dovrei riuscire ad arrangiarmi da solo perchè devo solo modoficare degli script già esistenti....Ok. 🙂


  • User

    Ok grazie anche il form è apposto, però mi sa che mi sono espresso male😊:

    @ManuelHT said:

    E poi se volessi fare in modo che gli utenti possano votare una quantità X di volte ogni Y di tempo (per esempio 3 volte a settimana e per 3 siti diversi) come faccio?

    Per questa parte avrei bisogno....mentre c'è un altra parte che consiste nel modificare un codice già esistente, in quella dovrei riuscire a cavarmela da solo...mi puoi aiutare per la parte che ho quotato sopra???

    Grazie!!!


  • Consiglio Direttivo

    Ti servirà un'altra tabella che abbia id, id del sito, ip di chi vota e data (formato timestamp).

    Nella index metterai uno script che cancellerà tutti i record più vecchi di una settimana.

    Ad ogni inserimento effettuerai due controlli:

    1. che l'utente non abbia già votato per qual sito nell'ultima settimana
    2. che il numero di votazioni presenti per quell'IP non sia già al limite impostato.

    Pero' mi permetto di farti notare che ad ogni riconnessione si ha un IP diverso, infatti solitamente questo controllo viene effettuato sul giornaliero o tramite cookie (ma già diventa più invasiva la cosa). 😉

    Se dalla selezione in questa tabella risulta che quell'IP non ha già votato quel sito, fai il controllo di quante volte è presente quell'IP, se è presente tre volte, dai messaggio di errore, se è presente meno di tre volte provvedi al nuovo inserimento. 🙂


  • User

    Ok allora mettiamo caso che io volessi far votare una volta al giorno per ogni IP (quindi ogni cambio di IP) come posso fare?

    Creo un altra tabella con nome 'vote' ed inserisco 'id' (autoincrementale), 'idsito', 'ip' e 'date'. Una volta fatto ciò dovrei mettere quello script che mi cancella i dati una volta a settimana, ma come faccio?

    Quindi, eliminando il discorso dei 3 voti ognuno su un sito diverso, rimarrebbe solo da fare il controllo se l indirizzo IP ha votato nell'arco della giornata.
    Ho provato quindi a buttare già due righe di codice ma molto probabilmente sarà sbagliato:

    Il codice del form sarebbe questo:

    
    <form method="post" action="add-vote.php">
    <input type="hidden" name="id" value="<? echo $id; ?>" />
    <input type="hidden" name="ip" value="<? echo $ip; ?>" />
    <input type="submit" name="vote" value="Invia il voto per questo sito" />
    </form>
    
    

    ed il codice di add-vote.php sarebbe questo:

    
    
    <?
    $id=$_POST['site'.'id'];
    $ip=$_POST['vote'.'ip'];
    
    require_once ("config.php");
    
    $sql="SELECT ip FROM vote WHERE ip='$ip'";
    $query=@mysql_query($sql) or die (mysql_error());
    
    $row=mysql_num_rows($query);
    if ($row!=0)
    {
       echo "Non puoi votare due volte nell'arco della stessa giornata";
       exit;
    }  
    else
    {
    $sql="UPDATE site SET vote=vote+1 WHERE id='$id'";
    $query=@mysql_query($sql) or die (mysql_error());
    }
    echo("Il tuo voto è stato inviato con successo");
    ?>
    
    
    

    Ho specificato in $ip il percorso 'site'.'id' per non fare confusione con id della tabella 'vote' quindi probabilmente sarà sbagliato....
    mi puoi dare le giuste correzioni per favore??


  • Consiglio Direttivo

    Beh, se decidi di fare il controllo giornalmente allora cancellerai quel voto giornalmente. 😉

    Quindi: come cancellare i dati più vecchi di un tot di tempo?
    Se usi il formato timestamp per la data ti verrà un gioco da ragazzi. 😉
    Ti basta implementare nelle pagine del sito uno script che cancelli tutti i record della tabella vote più vecchi di XXX secondi rispetto all'orario attuale, ovvero:
    [php]<?
    require_once ("config.php");
    $sql="DELETE FROM vote WHERE date<".time()-86400."";
    $query=@mysql_query($sql) or die (mysql_error());
    ?>[/php]Time() è una funzione di PHP che ti restituisce il timestamp attuale del server, 86400 sono i secondi in un giorno. 😉

    Vediamo ora l'add-vote.php.
    Nel form basta che ci sia l'id del sito, quindi:
    [html]<form method="post" action="add-vote.php">
    <input type="hidden" name="id" value="<? echo $id; ?>" />
    <input type="submit" name="vote" value="Invia il voto per questo sito" />
    </form>[/html]Nel file add-vote.php recuperi l'id del sito, associ l'IP dell'utente ad una variabile e quindi effettui il controllo se nella tabella vote quell'IP ha già votato quel sito (dato che passate le 24 ore il record viene automaticamente cancellato non lo troverà se ha votato il giorno prima):
    [php]<?
    $id=$_POST['id'];
    $ip=$_SERVER['REMOTE_ADDR']; //l'indirizzo IP dell'utente

    require_once ("config.php");

    //controlliamo che l'associazione IP-id non esista già.
    $sql="SELECT * FROM vote WHERE id_site='$id' AND ip='$ip'";
    $query=@mysql_query($sql) or die (mysql_error());

    // vediamo se la query contiene delle righe
    $row=mysql_num_rows($query);
    if ($row!= 0) //se la query ha delle righe e quindi ha estratto dei risultati
    {
    echo "Hai già votato per questo sito, torna alla <a href="paginasito.php?id=".$id."">pagina del sito</a>.";
    }
    else // se la query non produce risultati
    {
    $sql="UPDATE site SET vote=vote+1 WHERE id='$id'";
    $query=@mysql_query($sql) or die (mysql_error());

    echo "Grazie per aver votato, torna alla <a href="paginasito.php?id=".$id."">pagina del sito</a>.";
    }
    ?>[/php]Credo che qualcosa del genere potrebbe andare. 🙂


  • User

    Provando a fare come dici tu il voto funziona ma non invia l'ip alla tabello vote-->ip

    In effetti guardando il codice non capisco come fa ad inviare e quindi a registrare l'indirizzo ip nel database, per poi verificare se esiste, inoltre io voglio fare in modo che un certo IP possa votare solo una volta, per qualsiasi sito, cioè non può votare due siti diversi, quindi al posto di

    $sql="SELECT * FROM vote WHERE id_site='$id' AND ip='$ip'";
    ```presumo che devo mettere solo
    
    

    $sql="SELECT * FROM vote WHERE ip='$ip'";

    
    Un altra cosa, lo script per il cancellamento dei record lo devo mettere nella pagina della votazione?
    
    Ma poi se ho due $sql diversi non vanno in contrasto?

  • Consiglio Direttivo

    @ManuelHT said:

    Provando a fare come dici tu il voto funziona ma non invia l'ip alla tabello vote-->ip
    Perché me lo son dimenticato. 😄 Maledetta fretta...
    Manca l'inserimento dei dati nella tabella vote:

    [php] <?
    $id=$_POST['id'];
    $ip=$_SERVER['REMOTE_ADDR']; //l'indirizzo IP dell'utente

    require_once ("config.php");

    //controlliamo che l'associazione IP-id non esista già.
    $sql="SELECT * FROM vote WHERE id_site='$id' AND ip='$ip'";
    $query=@mysql_query($sql) or die (mysql_error());

    // vediamo se la query contiene delle righe
    $row=mysql_num_rows($query);
    if ($row!= 0) //se la query ha delle righe e quindi ha estratto dei risultati
    {
    echo "Hai già votato per questo sito, torna alla <a href="paginasito.php?id=".$id."">pagina del sito</a>.";
    }
    else // se la query non produce risultati
    {
    $sql="UPDATE site SET vote=vote+1 WHERE id='$id'";
    $query=@mysql_query($sql) or die (mysql_error());

    $sql="INSERT INTO vote (id_sito, ip, date) VALUES ('$id', '$ip', ".time().")";
    $query=@mysql_query($sql) or die (mysql_error());

    echo "Grazie per aver votato, torna alla <a href="paginasito.php?id=".$id."">pagina del sito</a>.";
    }
    ?> [/php]

    ...voglio fare in modo che un certo IP possa votare solo una volta, per qualsiasi sito, cioè non può votare due siti diversi, quindi al posto di

    $sql="SELECT * FROM vote WHERE id_site='$id' AND ip='$ip'";
    ```presumo che devo mettere solo
    
    

    $sql="SELECT * FROM vote WHERE ip='$ip'";

    Giustissimo. ;)
    
    Ma a questo punto non ti serve più il riferimento dell'id_sito in quella tabella. :)
    
    > Un altra cosa, lo script per il cancellamento dei record lo devo mettere nella pagina della votazione?
    Beh, sarebbe meglio in tutte, potresti, volendo, inglobarlo nel config.php. :)
    
    > Ma poi se ho due $sql diversi non vanno in contrasto?
    Una volta eseguita la query la variabile $sql non ti serve più, puoi quindi assegnarli ulteriori valori nella stessa pagina, l'importante è ricordare che quando richiami una variabile come $sql, etc. etc., queste avranno come valore l'ultimo che gli hai assegnato. ;)

  • User

    Ora funziona tutto tranne che anche avendo

    echo "Hai già votato per questo sito";
    ```invece di postarmi la frase mi dice:
    
    "Duplicate entry 'XXXXX' for key 'ip'"   dove XXXXX è il mio IP, come mai???
    
    Poi un altra cosa: in pratica nella mia pagina ho un filmato .sfw dove al suo interno devono essere inseriti i siti che sono elencati in un file xml. I siti devono essere inseriti sotto forma di codice html:
    <a href="linksito" style="font-size: 12px" >Nome sito</a>
    linksito e nome sito devono essere presi dal database e il valore font-size deve essere preso dallo script che mi avevi dato tu.
    Ora il problema è che se la pagina fosse PHP la saprei fare, ma essendo la pagina XML come posso fare ad inserire quei dati?
    Posso inserire il php all interno dell' xml?
    
    
    
    grazie ancora sul serio, ormai è quasi finita   :)
    
    
    ps: nel campo data mi da "0000-00-00 00:00:00", è normale?? e poi per il campo IP ho messo INT (30) è giusto?

  • Consiglio Direttivo

    @ManuelHT said:

    Ora funziona tutto tranne che anche avendo

    >echo "Hai già votato per questo sito";
    >```invece di postarmi la frase mi dice:
    
    "Duplicate entry 'XXXXX' for key 'ip'"   dove XXXXX è il mio IP, come mai???
    
    ps: nel campo data mi da "0000-00-00 00:00:00", è normale?? e poi per il campo IP ho messo INT (30) è giusto?
    La risposta te la dai nel P.S., dato che i campi son impostati male per i dati che ricevono non verificherà mai l'esistenza della query. :)
    Ti da quel valore nel campo data perché te lo hai impostato come campo data per ricevere dati del tipo: 2009-04-15 14:42:00. Ma siccome stiamo lavorando di timestamp e quindi con i secondi, ovvero numeri interi, il campo date dovrà essere un INT.
    Per l'IP non va bene l'INT dato che 127.0.0.1 non è un numero intero, puoi mettere anche un VARCHAR volendo, non è un grosso problema. ;)
    
    
    > Poi un altra cosa: in pratica nella mia pagina ho un filmato .sfw dove al suo interno devono essere inseriti i siti che sono elencati in un file xml. I siti devono essere inseriti sotto forma di codice html:
    <a href="linksito" style="font-size: 12px" >Nome sito</a>
    linksito e nome sito devono essere presi dal database e il valore font-size deve essere preso dallo script che mi avevi dato tu.
    Ora il problema è che se la pagina fosse PHP la saprei fare, ma essendo la pagina XML come posso fare ad inserire quei dati?
    Posso inserire il php all interno dell' xml?Purtroppo quì non saprei esserti d'aiuto, non ho mai lavorato su file XML. :(

  • User

    Ok grazie, ti vorrei chiedere un altro paio di cose:
    per evitare gli spammer si può fare qualcosa?
    se dovessi richiamare i link sotto forma

    <a href="link_sito" style="font-size: XYpx" >nome_sito</a>
    ```questo script
    

    <?

    require_once ("config.php");

    $sql="SELECT vote FROM site";
    $query=@mysql_query($sql) or die (mysql_error());

    if ($array['vote']< 10 && $array['vote']>0)
    {
    $size=3;
    }
    else if ($array['vote']< 20 && $array['vote']>9)
    {
    $size=4;
    }
    else if ($array['vote']< 30 && $array['vote']>19)
    {
    $size=5;
    }
    else if ($array['vote']< 40 && $array['vote']>29)
    {
    $size=6;
    }
    else if ($array['vote']>39)
    {
    $size=8;
    }
    else
    {
    $size=2;
    }

    $sql="SELECT * FROM site ORDER BY name ASC";
    $query=@mysql_query($sql) or die (mysql_error());
    //a questo punto associ ad un array il risultato della query e quindi cicli il contenuto
    while ($array=mysql_fetch_array($query))
    {
    echo "<a href="".$array['link']."" style="font-size: <? echo $size; ?>pt">".$array['name']."</a><br />";
    }

    mysql_close($connessione);
    ?>

    
    In questo modo
    da 1 a 9 voti si ha '3'
    da 10 a 19 si ha '4'
    da 20 a 29 si ha '5'
    da 30 a 39 si ha '6'
    per più di 40 si ha '8'
    e per 0 voti si ha '2' giusto?

  • Consiglio Direttivo

    Tutti i controlli vanno quì:
    [php]<?
    ......
    while ($array=mysql_fetch_array($query))
    {
    // copia quì tutti gli if -> else
    echo "<a href="".$array['link']."" style="font-size: ".$size."pt">".$array['name']."</a><br />";
    }
    .........
    ?>[/php]Fuori dal while non otteresti nulla dato che l'array $array non è stato ancora creato. 😉

    Altra cosa, se sei dentro l'istruzione PHP non devi richiamare nuovamente il modulo:

      [echo](http://www.giorgiotave.it/wikigt/os/Echo) "<a href=\"".$array['link']."\" style=\"font-size: <? echo $size; ?>pt\">".$array['name']."</a><br />";
    

    Questo lo devi variare come sopra. 😉


  • User

    Ok ora funziona, grazie mille.
    Ti volevo chiedere se era possibile evitare lo spam, cioè che vengano inseriti siti dai bot o cose del genere. Poi se era possibile fare in modo che gli utenti siano costratti ad inserire un sito che inizia con "http: //" oppure che qualsiasi cosa inserisca venga inserito con "http: //" altrimenti la prende come se fosse una sottocartella del mio stesso sito.
    E poi se era possibile fare in modo che quando si inserisce un sito o una descrizione con una lettera accentata non mi compaia la lettera tradotta in html. per esempio ho inserito una "è" e mi è apparso "è".

    grazie mille ancora!!!!


  • Consiglio Direttivo

    @ManuelHT said:

    Ti volevo chiedere se era possibile evitare lo spam, cioè che vengano inseriti siti dai bot o cose del genere.
    Si, scusami, l'avevo letto ma rispondentoti m'è passato di mente. Hai due possibilità:

    • Implementare una conferma visuale (captcha);
    • Implementare un calcolo automatico di cui l'utente deve scrivere il risultato di due numeri random (es.: quanto fa 2 + 5? ed accanto la input box per inserire il numero, nella pagina di controllo verifichi se la somma inserita è giusta)

    Poi se era possibile fare in modo che gli utenti siano costretti ad inserire un sito che inizia con "http: //" oppure che qualsiasi cosa inserisca venga inserito con "http: //" altrimenti la prende come se fosse una sottocartella del mio stesso sito.Puoi sfruttare la funzione eregi (che sarebbe la versione case insensitive di ereg), per controllare se la stringa inserita contiene http://:
    [php]if (eregi('http://', $link)
    {
    // procedi con l'inserimento
    }
    else
    {
    $link="http://".$link;
    //procedi con l'inserimento
    }[/php];)
    E poi se era possibile fare in modo che quando si inserisce un sito o una descrizione con una lettera accentata non mi compaia la lettera tradotta in html. Per esempio ho inserito una "è" e mi è apparso "è".Dimenticanza mia, pardon. 😉

    All'atto della visualizzazione della descrizione o del nome inserisci la funzione html_entity_decode($description), dovrebbe andare così. 😉


  • User

    Non ho capito bene dove inserire il secondo script: mi puoi fare un esempio?
    E mi puoi far vedere come fare quello script dell inserire la somma dei numeri?

    Grazie ancora, se vuoi ti mando un pm e ti faccio vedere come sta venendo il sito!!!! 🙂 😉 🙂


  • Consiglio Direttivo

    Dovrai inserirlo nella pagina dove inserisci il sito nel Db:
    [php] <?
    $name=htmlentities($_POST['name'], ENT_QUOTES);
    $link=htmlentities($_POST['link'], ENT_QUOTES);
    $description=htmlentities($_POST['description'], ENT_QUOTES);
    $email=htmlentities($_POST['email'], ENT_QUOTES);

    require_once ("config.php"); // includo il file di connessione al Db

    $sql="SELECT link FROM site WHERE link='$link'";
    $query=@mysql_query($sql) or die (mysql_error());

    $row=mysql_num_rows($query);
    if ($row!=0)
    {
    echo "Questo sito è già stato inserito";
    exit;
    }
    else
    {
    if (eregi('http://', $link)
    {
    $sql="INSERT INTO site (name, link, description, email) VALUES ('$name', '$link', '$description', '$email')";
    $query=@mysql_query($sql) or die (mysql_error());
    }
    else
    {
    $link="http://".$link;
    $sql="INSERT INTO site (name, link, description, email) VALUES ('$name', '$link', '$description', '$email')";
    $query=@mysql_query($sql) or die (mysql_error());
    }
    }
    ?> [/php];)

    E mi puoi far vedere come fare quello script dell inserire la somma dei numeri?Dovresti sfruttare la funzione rand (random) per darti dei numeri a caso, mettiamo da 1 a 10. Oltre a visualizzarli come domanda, associ il valore a degli hidden data, inserisci nel form quindi un input per far inserire il risultato e nella pagina di controllo verifichi che la somma dei due numeri sia uguale al risultato immesso dall'utente:
    [php]<?
    $rand1=rand(1,10);
    $rand2=rand(1,10);
    ?>
    <form........
    .......

    Quanto fa <? echo $rand1; ?> + <? echo $rand2; ?>?
    <input type="text" name="ris" />
    <input type="hidden" name="rand1" value="<? echo $rand1; ?>" />
    <input type="hidden" name="rand2" value="<? echo $rand2; ?>" />
    </form>[/php]Nella pagina di inserimento metterai il recupero di questi valori:
    [php]<?
    ......
    $email=htmlentities($_POST['email'], ENT_QUOTES);
    $ris=$_POST['ris'];
    $rand1=$_POST['rand1'];
    $rand2=$_POST['rand2'];

    // ai controlli aggiungerai la verifica
    if (is_int($ris) && ($rand1 + $rand2) == $ris && $ris>0)
    {
    require_once ("config.php"); // includo il file di connessione al Db
    ............
    //metti il resto dello script
    }
    else
    {
    echo "Hai immesso un valore errato.";
    }
    ?>[/php]Nella verifica per prima cosa controlli che $ris sia un numero intero (is_int), poi che il risultato sia giusto (($rand1 + $rand2) == $ris) e quindi che lo stesso sia maggiore di zero ($ris>0), che non si sa mai. 😉


  • User

    Il form non funziona, mi da sempre il messaggio "hai inserito un valore errato"
    il codice che ho fatto è qeusto:

    
    <?
    $rand1=rand(1,10);
    $rand2=rand(1,10);
    ?>
    
    
    <form id="aggiungi-sito" method="post" action="fun-add-site.php">
    Nome sito:<br />
    <input type="text" name="name" /><br />
    Link sito:<br />
    <input type="text" name="link" /><br />
    Descrizione sito:<br />
    <input type="text" name="description" /><br />
    Email inseritore:<br />
    <input type="text" name="email" /><br /><br />
    Quanto fa <? echo $rand1; ?> + <? echo $rand2; ?>?(serve per verificare che tu sia un essere umano)
    <input type="text" name="ris" />
    <input type="hidden" name="rand1" value="<? echo $rand1; ?>" />
    <input type="hidden" name="rand2" value="<? echo $rand2; ?>" />
    <input type="submit" value="Invia Sito" />
    </form>
    
    ```per il form,
    
    e questo:
    

    <?
    $name=htmlentities($_POST['name'], ENT_QUOTES);
    $link=htmlentities($_POST['link'], ENT_QUOTES);
    $description=htmlentities($_POST['description'], ENT_QUOTES);
    $email=htmlentities($_POST['email'], ENT_QUOTES);
    $ris=$_POST['ris'];
    $rand1=$_POST['rand1'];
    $rand2=$_POST['rand2'];

    require_once ("config.php");

    if (is_int($ris) && ($rand1 + $rand2) == $ris && $ris>0)
    {
    $sql="SELECT link FROM site WHERE link='$link'";
    $query=@mysql_query($sql) or die (mysql_error());
    $row=mysql_num_rows($query);
    if ($row!=0)
    {
    echo "Questo sito è già stato inserito";
    exit;
    }
    else
    {
    if (eregi('http ://', $link))
    {
    $sql="INSERT INTO site (name, link, description, email, vote) VALUES ('$name', '$link', '$description', '$email', '0')";
    $query=@mysql_query($sql) or die (mysql_error());
    echo("Il tuo sito è stato aggiunto con successo.");
    }
    else
    {
    $link="http ://".$link;
    $sql="INSERT INTO site (name, link, description, email, vote) VALUES ('$name', '$link', '$description', '$email', '0')";
    $query=@mysql_query($sql) or die (mysql_error());
    echo("Il tuo sito è stato aggiunto con successo.");
    }

    }
    

    }
    else
    {
    echo "Hai immesso un valore errato.";
    }
    ?>

    
    E poi mi puoi spiegare meglio (magari con un esempio) dove mettere "html_entity_decode($description)" per evitare che vengano convertite le vocali accentate sia nella descrizione che per esempio nel link o nel nome del sito?
    grazie mille
    
    
    ps:ho dovuto staccare http :// in eregi sennò non mi faceva inviare il post