- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Aiuto su controllo email giamesitente mysql
-
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.phpform.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
-
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".