Visualizzazione risultati 1 fino 4 di 4

Discussione: Problema con codice PHP

  1. #1
    Guest

    Predefinito Problema con codice PHP

    Buongiorno a tutti.
    Ho una sorta di guestbook in php molto semplice che ultimamente è inondato di spam. Voglio evitare di mettere il captcha
    nel codice ci sono queste righe sulle quali sto lavorando:

    if ($email!=""){ if (!validemail($email)) $error.="<br>&raquo; $txtbademail"; }
    if ($msg=="") $error.="<br>&raquo; $txtbadmsg";

    if ($msg=="http") $error.="<br>&raquo; $txtbadmsg";
    if ($msg=="/") $error.="<br>&raquo; $txtbadmsg";


    Ovvero: se il campo indirizzo mail è vuoto il commento non viene pubblicato e appare un messaggio di errore al visitatore. Idem per il commento se è vuoto.
    Ora visto che lo spam che ricevo è solo pubblicità verso altri siti, ho pensato di aggiungere la terza e la quarta riga che in teoria dovrebbero bloccare tutti i commenti che contengono HTTP oppure il simbolo / per rendere così impossibile la pubblicazione di links e siti.
    In teoria funziona se uno nel commento scrive soltanto HTTP (oppure il simbolo / )
    Ma nel momento che uno scrive http://nomesito.ecc (quindi HTTP seguito da qualcos altro) il link viene pubblicato ugualmente.
    Come faccio ad indicare nel codice di bloccare anche tutto ciò che preceda o segua HTTP (e non solo la parola HTTP)
    spero di essermi spiegato bene
    grazie a tutti

  2. #2
    Guest

    Predefinito

    Citazione Originalmente inviato da ahfacile Visualizza messaggio
    Buongiorno a tutti.
    Ho una sorta di guestbook in php molto semplice che ultimamente è inondato di spam. Voglio evitare di mettere il captcha
    nel codice ci sono queste righe sulle quali sto lavorando:

    if ($email!=""){ if (!validemail($email)) $error.="<br>&raquo; $txtbademail"; }
    if ($msg=="") $error.="<br>&raquo; $txtbadmsg";

    if ($msg=="http") $error.="<br>&raquo; $txtbadmsg";
    if ($msg=="/") $error.="<br>&raquo; $txtbadmsg";


    Ovvero: se il campo indirizzo mail è vuoto il commento non viene pubblicato e appare un messaggio di errore al visitatore. Idem per il commento se è vuoto.
    Ora visto che lo spam che ricevo è solo pubblicità verso altri siti, ho pensato di aggiungere la terza e la quarta riga che in teoria dovrebbero bloccare tutti i commenti che contengono HTTP oppure il simbolo / per rendere così impossibile la pubblicazione di links e siti.
    In teoria funziona se uno nel commento scrive soltanto HTTP (oppure il simbolo / )
    Ma nel momento che uno scrive http://nomesito.ecc (quindi HTTP seguito da qualcos altro) il link viene pubblicato ugualmente.
    Come faccio ad indicare nel codice di bloccare anche tutto ciò che preceda o segua HTTP (e non solo la parola HTTP)
    spero di essermi spiegato bene
    grazie a tutti
    Se la tua regola dice che SE qualcosa UGUALE A "http" è chiaro che se scrivi qualcosa in pù l'uguaglianza non è più verificata.

    Senza entrare nel discorso regex potresti fare un test piuttosto che con una uguaglianza con un "se contiene" (tipo if(strpos($testo, "http") > 0) allora ci sono link e blocco ...

  3. #3
    Guest

    Predefinito Grazie

    Grazie simpleticket.
    era proprio il "se contiene" che non sapevo come interpretare in php
    Ciao

  4. #4
    Guest

    Predefinito

    quoto in pieno simpleticket XD

Regole di scrittura

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