• User Newbie

    Aiuto su controllo email giamesitente mysql

    Slave a tutti ho un problema con un un codice php ,premetto che questo codice lo trovato in rete ma vorrei che compie alcune funzioni che non ci sono ,tipo controllo email esistente e non va risciversi nel mysql e controllo from email che sia giusta,
    il programma si presente con questi file:
    form.php
    config.php
    connect.php

    form.php
    [PHP]<?php
    if($_POST) {
    inserisci_record();
    }
    else {
    mostra_form();
    }

    function inserisci_record()
    {
    // richiamo il file di configurazione
    require 'config.php';

    // richiamo lo script responsabile della connessione a MySQL
    require 'connect.php';
    
    // recupero i campi di tipo "stringa"
    $nome      = trim($_POST['nome']);
    $email     = trim($_POST['email']);
    $messaggio = trim($_POST['messaggio']);
    
    // verifico se devo eliminare gli slash inseriti automaticamente da PHP
    if(get_magic_quotes_gpc())
    {
        $nome      = stripslashes($nome);
        $email     = stripslashes($email);
        $messaggio = stripslashes($messaggio);
    }
    
    $nome      = mysql_real_escape_string($nome);
    $email     = mysql_real_escape_string($email);
    $messaggio = mysql_real_escape_string($messaggio);
    
    // recupero gli altri campi del form
    $sesso      = isset($_POST['sesso']) ? intval($_POST['sesso']) : 0;
    $newsletter = isset($_POST['newsletter']) ? 1 : 0;
    $attivita   = intval($_POST['attivita']);
    
    // verifico la presenza dei campi obbligatori
    if(!$nome)
    {
        $messaggio = urlencode("Non hai inserito il nome");
        header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
        exit;
    }
     
      
    // preparo la query
    $query = "INSERT INTO utenti (nome,email,sesso,newsletter,attivita,messaggio)
              VALUES ('$nome','$email',$sesso,$newsletter,$attivita,'$messaggio')";
    
    // invio la query
    $result = mysql_query($query);
    
    // controllo l'esito
    if (!$result) {
        die("Errore nella query $query: " . mysql_error());
    }
    
    // recupero l'id autoincrement generato da MySQL per il nuovorecord inserito
    $id_inserito = mysql_insert_id();
    
    // chiudo la connessione a MySQL
    mysql_close();
    
    $messaggio = urlencode("Inserimento effettuato con successo (ID=$id_inserito)");
    header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
    

    }

    function mostra_form()
    {
    // mostro un eventuale messaggio
    if(isset($_GET['msg']))
    echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
    ?>
    <form name="form_registrazione" method="post" action="">
    <label>nome:
    <input name="nome" type="text" />
    </label>
    (obbligatorio)
    <p>
    <label>email:
    <input name="email" type="text" />
    </label>
    </p>
    <p> Sesso:
    <label>
    <input type="radio" name="sesso" value="1" />
    M</label>
    <label>
    <input type="radio" name="sesso" value="2" />
    F</label>
    </p>
    <p>
    <label>inviami newletter:
    <input name="newsletter" type="checkbox" value="1" />
    </label>
    </p>
    <p>
    <label>attività:
    <select name="attivita">
    <option value="0">:: seleziona ::</option>
    <option value="1">studente</option>
    <option value="2">lavoratore</option>
    <option value="3">disoccupato</option>
    </select>
    </label>
    </p>
    <p>
    <label>messaggio:<br />
    <textarea name="messaggio" cols="40" rows="5"></textarea>
    </label>
    </p>
    <p>
    <input name="invia" type="submit" value="Invia" />
    </p>
    </form>
    <?php
    }
    ?>][/PHP]

    config.php
    [PHP]<?php
    $DB_host = 'localhost';
    $DB_user = 'root';
    $DB_password = '';
    $DB_name = 'prova';
    ?>[/PHP]

    connect.php
    [PHP]<?php
    $link = mysql_connect($DB_host, $DB_user, $DB_password);
    if (!$link) {
    die ('Non riesco a connettermi: ' . mysql_error());
    }

    $db_selected = mysql_select_db($DB_name, $link);
    if (!$db_selected) {
    die ("Errore nella selezione del database: " . mysql_error());
    }
    ?>[/PHP]

    questo il codice sinceramente non so cosa modificare per far fare controlli sopra.
    Grazie a tutti per aiuto


  • Admin

    Crea una funzione "duplicate_email($email_da_controllare)" che fa una query al database in cui controlla se la mail che passi come input è presente (1) oppure no (0).

    Questa funzione la chiami prima della insert e se torna 0 procedi altrimenti se torna 1 ritorni un messaggio di errore.

    Per essere anche più certo che non possa avvenire inserimento duplicato puoi impostare la colonna a DB come "unique".