Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21

Discussione: Problema Query MySql

  1. #1

    Problema Query MySql

    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

  2. #2
    non e' che il tuo script cosi' come e' postato sia granche' leggibile, ma un errore si puo' vedere qui:

    $a = mysql_query($ask) or die ("Errore.");
    $a = mysql_fetch_row($a);
    echo $a;

    if ($a == "CODEOFF") {

    $a e' un array. mysql_fetch_row rende in un array numerico tutto il contenuto della tupla richiesto dalla select.

    Puoi verificare con:

    $a = mysql_query($ask) or die ("Errore.");
    $a = mysql_fetch_row($a);
    echo "<pre>";
    print_r($a);
    echo "</pre>";

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Mi dispiace ma mi è venuto formattato male...
    Ho controllato e mi viene fuori Array. Non è che sbaglio proprio funzione per inserire il dato all'interno della variabile?

    P.S.
    Nella riga sopra, dove scrivo la query AXIZZ è un codice di prova contenuto nel database. Nella realtà ci andrebbe una variabile.
    Ultima modifica di Coraz97; 23-01-2014 a 23:38

  4. #4

    Qui c'è una versione precedente del codice più chiara:

    codice:
    <?php
     
    //----------CONFIGURAZIONE----------
    require 'configurazione.php';
     
    //----------CONNESSIONE----------
     
    $conn = mysql_connect($server, $username, $password);
    if (!$conn)
    {
    die ("Connessione a Mysql non riuscita. " . mysql_error());
    }
    $conn_db = mysql_select_db($database, $conn);
    if (!$conn_db)
    {
    die ("Connessione non riuscita al database specificato. " . mysql_error());
    }
    //----------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 = $cond = "";
    $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 = (isset($_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 {
         $check = mysql_query("SELECT * FROM $tabella_B WHERE Nome = '$nome' and Cognome = '$cognome'");
         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 {
          $check = mysql_query("SELECT * FROM $tabella_B WHERE E-mail = '$mail");  
          if ($check != "") {
              $n++;
              $err_mail = "Indirizzo E-mail già registrato.";
          }
      }
    CONTINUA SOTTO (non rientrava nel limite dei caratteri)

  5. #5
    codice:
        //----------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) {
             $n++;
             $err_cond = "Accetta le Condizioni per continuare.";
         }
    }
    
    //----------Registrazione----------
     
    if ($n == 0) {
         $a = mysql_query("SELECT Attivazione FROM $tabella_A WHERE Password = $alfa");
         
        if ($a == "CODEOFF") {
                $parola_A = sha1($parola_A);
                mysql_query("INSERT INTO $tabella_B VALUES ('','$nome','$cognome','$classe','$mail','$alfa','$parola_A','')");
                mysql_query("UPDATE $tabella_A 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')");
                
                header("Location:pag_complete.php");
         } else if ($a == "CODEOFF") {
                  $err_alfa = "Codice già utilizzato!";
           } else {
                 $err_alfa = "Codice errato. Ricontrolla. ";
             }
    }
     
    mysql_close($conn);
     
    ?>
    
    

  6. #6
    non posso correggerti tutto il codice. Bastava sostituire le righe che ti ho segnalato con quelle che ti ho esemplificato.

    Ora hai degli errori nello script. Per esempio:

    $a = mysql_query("SELECT Attivazione FROM $tabella_A WHERE Password = $alfa");
    if ($a == "CODEOFF") {

    Qui ne vedo gia' due: $alfa e' una stringa e va inserito tra apici

    $a contiene il resource id # e non la stringa "CODEOFF" che attendi.

    poi non si capisce cosa vorresti fare. Crei una tabella per ogni utente?

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Quindi come faccio a inserire il dato in $a?

  8. #8
    Quote Originariamente inviata da piero.mac Visualizza il messaggio
    non e' che il tuo script cosi' come e' postato sia granche' leggibile, ma un errore si puo' vedere qui:

    $a = mysql_query($ask) or die ("Errore.");
    $a = mysql_fetch_row($a);
    echo $a;

    if ($a == "CODEOFF") {

    $a e' un array. mysql_fetch_row rende in un array numerico tutto il contenuto della tupla richiesto dalla select.

    Puoi verificare con:

    $a = mysql_query($ask) or die ("Errore.");
    $a = mysql_fetch_row($a);
    echo "<pre>";
    print_r($a);
    echo "</pre>";
    Avevi letto questo post?

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Si ma in quel modo vedo l'array numerico. Come faccio a ricevere la stringa così com'è nel database?

  10. #10
    Abbi pazienza ma sono un tipo un po' tardo:

    Spiegami che vuoi fare con questa cosa che hai messo e forse riusciro' ad aiutarti.

    //----------Registrazione----------

    if ($n == 0) {
    $a = mysql_query("SELECT Attivazione FROM $tabella_A WHERE Password = $alfa");

    if ($a == "CODEOFF") {
    $parola_A = sha1($parola_A);
    mysql_query("INSERT INTO $tabella_B VALUES ('','$nome','$cognome','$classe','$mail','$alfa','$parola_A','')");
    mysql_query("UPDATE $tabella_A 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')");

    header("Location ag_complete.php");
    } else if ($a == "CODEOFF") {
    $err_alfa = "Codice già utilizzato!";
    } else {
    $err_alfa = "Codice errato. Ricontrolla. ";
    }
    }
    Ultima modifica di piero.mac; 24-01-2014 a 16:08

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Tag per questa discussione

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.