Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514

    Controlli per la gestione di una mailing list

    Salve...sto realizzando una piccola mailling list e la prima cosa che voglio controllare e se la mail è presente nel database e se uno stesso ip prova ad inserire più di un indirizzo

    ho provato con

    codice:
    $queryctrl="select * from ml where mail='$mail' or ip='$ip' AND oggi='$oggi'";
    $ris_query_ver=mysql_query($queryctrl,$connessione) or die("1" . mysql_error());
    if($ris_query_ver){
    mi chiedo se la query rispecchia quello che voglio fare io.Il problema nasce dal fatto che se controllo che la query sia vera

    inizialmente nel database non c'è niente eppure mi dice che ho gia inserito la mail.

    Grazie....


    avete un tutorial che spieghi poi come fare per far confermare all'utente la registrazione alla mailing?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Se ho capito il tuo problema potresti utilizzare una variabile a cui assegnare mysql_num_rows();
    Nel caso il valore sia diverso da 0 (e quindi uguale a 1) non consenti un ulteriore inserimento.
    L'ip però potrebbe essere dinamico quindi non lo userei come criterio nella query. Io mi limiterei solo a verificare l'indirizzo e-mail.

  3. #3
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    si ovvio che l'ip è dinamico ma io lo faccio per evitare che inseriscano a ripetizione mail fasulle.

    per la storia del controllo mi sembra esagerato dover ricorerre sempre e solo al conteggio delle righe anche perchè dovrebbe essere falsa la query

    ANZI

    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  4. #4
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    per una cosa del genere sarebbe più corretto usare SELECT COUNT:
    Codice PHP:
    # controllo univocità inserimento mailinglist
    $controllo_univoco =  mysql_query("
    SELECT COUNT(*) AS totale
    FROM ml
    WHERE mail = '
    $mail'
    "
    ,$connessione_db) or die("Errore alla linea ".__LINE__.": ".mysql_error()) ;
    $conteggio mysql_fetch_array($controllo_univoco);
    if (
    $conteggio['totale'] != 0) echo "indirizzo già presente" 
    Invece per evitare inserimenti non voluti occorre creare un sistema più complesso tipo:
    - l'utente inserisce un indirizzo email
    - in automatico gli viene inviata una email per la conferma
    - in questa email metti un link con un numero casuale
    precedentemente inserito nel relativo record
    - l'utente per confermare deve cliccare sul link
    - lo script a cui punta il link verifica la corrispondenza
    con il numero casuale inserito nel db
    - se l'invio non viene confermato entro tot giorni
    la richiesta di inserimento viene cancellata.

    idem dicasi per la cancellazione

    Errare humanum est, perseverare ovest

  5. #5
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    il problema è la query lui mi considera lc ondizione del'ip come un or

    cioè verifica se esiste la mail o l'ip e insieme alla data decide e non deve essere così
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    Originariamente inviato da carlo2002
    per una cosa del genere sarebbe più corretto usare SELECT COUNT:
    Codice PHP:
    # controllo univocità inserimento mailinglist
    $controllo_univoco =  mysql_query("
    SELECT COUNT(*) AS totale
    FROM ml
    WHERE mail = '
    $mail'
    "
    ,$connessione_db) or die("Errore alla linea ".__LINE__.": ".mysql_error()) ;
    $conteggio mysql_fetch_array($controllo_univoco);
    if (
    $conteggio['totale'] != 0) echo "indirizzo già presente" 
    Invece per evitare inserimenti non voluti occorre creare un sistema più complesso tipo:
    - l'utente inserisce un indirizzo email
    - in automatico gli viene inviata una email per la conferma
    - in questa email metti un link con un numero casuale
    precedentemente inserito nel relativo record
    - l'utente per confermare deve cliccare sul link
    - lo script a cui punta il link verifica la corrispondenza
    con il numero casuale inserito nel db
    - se l'invio non viene confermato entro tot giorni
    la richiesta di inserimento viene cancellata.

    idem dicasi per la cancellazione

    grazie ho usato count e infatti me lo rileva ma la mia query è sbagliata.senza dover rifare la query due volte volgio anche controllare che qualche pazoide non sdi metta a rimepirmi il database di idiozie.

    inoltre il numero casuale lo devo creare all'istante mi dici qual'è la funzione per farlo? qualcosa tipo random()????
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  7. #7
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    ad esempio puoi utilizzare md5
    Codice PHP:
    $rnd md5(uniqid(microtime())); 
    ti genera una stringa di 32 caratteri più che sufficente allo scopo.
    Errare humanum est, perseverare ovest

  8. #8
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    credo di aver risolto il problema della queri inserendo le parentesi ma sto ancora controllando
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  9. #9
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    ti passo anche la tabella che uso io
    codice:
    CREATE TABLE `newsletter_iscrizioni` (
      `id_iscrizione_newsletter` int(10) unsigned NOT NULL auto_increment,
      `email` varchar(255) NOT NULL default '',
      `code_richiesta_iscrizione` varchar(32) NOT NULL default '',
      `dataora_richiesta_iscrizione` datetime NOT NULL default '0000-00-00 00:00:00',
      `convalida_iscrizione` tinyint(3) unsigned NOT NULL default '0',
      `dataora_convalida_iscrizione` datetime NOT NULL default '0000-00-00 00:00:00',
      `code_richiesta_revoca` varchar(32) NOT NULL default '',
      `dataora_richiesta_revoca` datetime NOT NULL default '0000-00-00 00:00:00',
       PRIMARY KEY  (`id_iscrizione_newsletter`)
    ) TYPE=MyISAM ;
    Errare humanum est, perseverare ovest

  10. #10
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    Grazie mi ha dato qualche informazione utile
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


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.