Buonasera a tutti,
è la prima volta che apro una discussione in questo forum spero di non fare troppi 'danni'.
In breve ho un problema con la ricezione dei dati da un database a una pagina PHP.
Ho cercato in lungo e in largo discussione inerenti su questo forum, in generale su google, su altri forum... ma non ho trovato nulla che sia riuscito a risolvere il mio problema. Mi affido a voi che sicuramente avete una maggiore esperienza e soprattutto un occhio critico mi farebbe comodo.
La pagina PHP serve a registrarsi per accedere a un contenuto aggiuntivo di un sito ed è strutturata grossomodo così: incomincia con un 'require' per caricare le variabili di connessione, l'apertura della connessione (FUNZIONANTE), poi una funzione per il controllo delle variabili, alcune righe per inserire i dati dei campi del form dentro le variabili, alcuni filtri e infine la parte di inserimento dei dati all'interno del database.
Ecco il codice della pagina all'ultimo salvataggio (escluso il 'require'):
Codice PHP:
<?php
//----------CONFIGURAZIONE----------
require 'configurazione.php';
//----------CONNESSIONE----------
$conn = mysql_connect($server, $username, $password);
if (!$conn) { die ("Connessione a Mysql non riuscita.");}
$conn_db = mysql_select_db($database, $conn);
if (!$conn_db) { die ("Connessione non riuscita al database specificato.");}
//----------FILTRO CARATTERI----------
function test_input($data){ $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data;}
//----------FILTRO VOID----------
//Variabili impostate vuote$nome = $cognome = $mail = $alfa = $parola_A = $parola_B = "";$err_titolo = $err_nome = $err_cognome = $err_mail = $err_alfa = $err_parola_A = $err_parola_B = $err_cond = "";$n = $a = 0;
//Acquisisci variabili$nome = test_input($_POST["nome"]);$cognome = test_input($_POST["cognome"]);$classe = ($_POST["classe"]);$mail = test_input($_POST["mail"]);$alfa = test_input($_POST["alfa"]);$parola_A = test_input($_POST["parola_A"]);$parola_B = test_input($_POST["parola_B"]);$cond= $_POST["cond"];
if ($nome == "" && $cognome == "" && $mail == "" && $alfa == "" && $parola_A == "" && $parola_B == "") { $n++; $err_titolo = "Tutti i campi sono obbligatori!";} else {
if ($nome == "") { $n++; $err_nome = "Inserisci il tuo " . "<span class='obj'>bellissimo</span>" . " Nome."; }
if ($cognome == "") { $n++; $err_cognome = "Inserisci il tuo " . "<span class='obj'>onorevole</span>" . " Cognome."; }
if ($mail == "") { $n++; $err_mail = "Inserisci la tua " . "<span class='obj'>simpatica</span>" . " E-Mail."; }
if ($alfa == "") { $n++; $err_alfa = "Inserisci il Codice " . "<span class='obj'>noioso.</span>"; }
if ($parola_A == "") { $n++; $err_parola_A = "Scegli una Password " . "<span class='obj'>divertente.</span>"; }
if ($parola_B == "") { $n++; $err_parola_B = "Conferma la tua Password " . "<span class='obj'>divertente.</span>"; }}
if ($n == 0) { //----------FILTRO NOME E COGNOME----------
if (!preg_match("/^[a-z A-Z]{3,24}$/", $nome) or !preg_match("/^[a-z A-Z]{3,24}$/", $cognome)) { $n++; $err_cognome = "Sono vietati i caratteri speciali per Nome e Cognome. Usa solo caratteri dalla a(A) alla z(Z). Caratteri minimi: 3. Massimi: 24."; } else { $ask = "SELECT * FROM " . $tabella_U . " WHERE Nome = " . $nome . " and Cognome = " . $cognome; $check = mysql_query($ask); if ($check == $nome or $check == $cognome) { $n++; $err_cognome = "Utente già registrato." . $check; } }
//----------FILTRO E-MAIL---------
if (!preg_match("/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/", $mail)) { $n++; $err_mail = "Indirizzo E-mail non valido."; } else { $ask = "SELECT * FROM " . $tabella_U . " WHERE Mail = " . $mail; $check = mysql_query($ask); if ($check != "") { $n++; $err_mail = "Indirizzo E-mail già registrato."; } }
//----------FILTRO PASSWORD----------
if ($parola_A != $parola_B) { $n++; $err_parola_B = "Le due Password non corrispondono. Riprova."; }
if (!preg_match("/^[a-z A-Z 0-9]{8,24}$/", $parola_A)) { $n++; $err_parola_A = "La Password contiene caratteri proibiti. Usa solo caratteri dalla a(A) alla z(Z). Caratteri minimi: 8. Massimi: 24."; }
//----------FILTRO CONDIZIONI---------- if ($cond == 0) { $err_cond = "Accetta le Condizioni per continuare."; }}
//----------Registrazione----------
if ($n == 0) { $ask = "SELECT Attivazione FROM password WHERE Password = 'AXIZZ'"; $a = mysql_query($ask) or die ("Errore."); $a = mysql_fetch_row($a); echo $a; if ($a == "CODEOFF") {echo "9"; $parola_A = sha1($parola_A); mysql_query("INSERT INTO $tabella_U VALUES ('', $nome, $cognome, $classe, $mail, $alfa, $parola_A, '')"); mysql_query("UPDATE $tabella_P SET Attivazione = 'CODEON' WHERE Password = $alfa"); mysql_query("CREATE TABLE $cognome (ID int(12) PRIMARY KEY, Nome varchar(24), Cognome varchar(24), Classe varchar(2), E-mail varchar(50), Codice varchar(5), Password varchar(40), Attivo int(1) DEFAULT '0')"); mysql_query("INSERT INTO $cognome VALUES ('', $nome, $cognome, $classe, $mail, $alfa, $parola_A, '')"); header("Location:pag_complete.php"); } else if ($a == "CODEON") { $err_alfa = "Codice già utilizzato!"; } else { $err_alfa = "Codice errato. Ricontrolla. "; }}mysql_close();
?>
Ogni utente che si registra ha un codice univoco, quindi ho bisogno di controllare se quel codice esiste nel database e nel caso disattivarne il riutilizzo.
Il problema sta proprio qui. Non riesco a immagazzinare la risposta nella variabile.
N.B.
Nel file che richiamo all'inizio dello sketch sono contenute le variabili $tabella_P = password; che contiene tutti i codici disponibili e $tabella_U = utenti; che contiene una lista di tutti gli utenti.
Ormai sono più di 2 settimane che ci sbatto la testa e ora confido in voi. Se avete anche delle osservazioni non inerenti direttamente al problema non esitate a scrivere.
Spero di aver dato abbastanza informazioni...
Vi ringrazio in anticipo,
Ciao