Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 44
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2016
    Messaggi
    33

    Login e registrazione per sito con database

    Salve a tutti... Devo creare un sito stile ecommerce come esercizio. Ho già creato il mio schemino del database, e visto che il sito deve prevedere l'iscrizione, ho creato una tabella users con i campi id, username e password e email. quando devo fare il login al sito con dati già immessi nel database, nessun problema, quando devo fare la registrazione, ecco che non trovo più l'errore... Cioè, mi da "query di registrazione non riuscita Access denied for user ''@'localhost' (using password: NO)"... Ho 3 pagine per ora... Indice, registrazione e quella di connessione al database.
    Registrazione:
    codice:
    <?php
    session_start(); 
    include("db_con.php"); // includo il file di connessione al database
    if($_POST["username_reg"] != "" && $_POST["password_reg"]!= "" && $_POST["email_reg"] != "") { 
        $query_registrazione = mysql_query("INSERT INTO users (username, password, email)
        VALUES ('".$_POST["username_reg"]."','".$_POST["password_reg"]."','".$_POST["email_reg"]."')") // scrivo sul DB questi valori
        or die ("query di registrazione non riuscita ".mysql_error());
    } 
    else {
        header('location:index.php?action=registration&errore=Non hai compilato tutti i campi obbligatori');
    }
    if(isset($query_registrazione)){ //se la reg è andata a buon fine
        $_SESSION["logged"]=true; 
        header("location:index.php");
    } 
    else {
        echo "non ti sei registrato con successo";
    }
    ?>
    connessione:
    codice:
    <?php     //connessione al nostro database
    $connessione_al_server=mysqli_connect("localhost","root","", "ecommerce"); 
    if(!$connessione_al_server){
        die ('Non riesco a connettermi: errore '.mysql_error()); 
    }
    ?>
    Ultima modifica di Elia934e; 30-11-2016 a 12:00

  2. #2
    Cominciamo col fare un po' di ordine, prova così
    Codice PHP:
    session_start(); 
    // includo il file di connessione al database
    include("db_con.php"); 
    if(
    $_POST["username_reg"] != "" && $_POST["password_reg"]!= "" && $_POST["email_reg"] != ""

        
    $sql "INSERT INTO users (username, password, email)";
        
    $sql .= " VALUES ('".$_POST["username_reg"]."','".$_POST["password_reg"];
        
    $sql .= "','".$_POST["email_reg"]."')";
        
    // scrivo sul DB questi valori
        
    if(mysql_query($sql)) 
        {
            
    $_SESSION["logged"]=true
            
    header("location:index.php");
        }
        else
        echo 
    "query di registrazione non riuscita | ".mysql_error();

    else 
    {
        
    header('location:index.php?action=registration&errore=Non hai compilato tutti i campi obbligatori');

    Se non funziona prova a fare una echo della stringa SQL ed eseguila in phpmyadmin per vedere se è corretta. Se non devi fare un semplice esercizio per la scuola ma vuoi avere un futuro da sviluppatore ti consiglio di abbandonare immediatamente le funzioni mysql_ ed utilizzare le mysqli_ perchè le mysql_ sono deprecate e non più funzionanti nella versione 7 di PHP.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2016
    Messaggi
    33
    Ok, ora funziona tutto... ho cambiato e usato mysqli_ e aggiustando le cose per la loro sintassi va! tuttavia dopo voglio accedere a una seconda pagina che mi faccia inserire dei campi che prima non volevo mettere... Non mi da errori o cosa, ma visto che nel database questi nuovi valori nono si salvano, un errore c'è...
    codice:
    <?php 
        echo "Ti sei registrato con successo"; 
    ?>
    
    
    <html>  
        <head>
            <meta charset="utf-8">
            <link rel="stylesheet" type="text/css" href="style.css">
        </head>
        
        <body>
            <?php
            session_start(); // come sempre prima cosa, aprire la sessione 
            $host='localhost';
            $user='root';
            $password='';
            $database='ecommerce';
    
    
            $db=mysqli_connect($host, $user, $password, $database) or die ("Impossibile connettersi al server $host");
            mysqli_select_db($db, $database) or die ("Impossibile connettersi al database $database");
            if (isset($_POST['Nome'],$_POST['Cognome'],$_POST['Telefono'],$_POST['NCivico'])) {
                $query="INSERT INTO users (Nome, Cognome, Telefono, NCivico)" . 
                "VALUES('" .$_POST['Nome'] . "', '" .$_POST['Cognome'] . "', '" .$_POST['Telefono'] . "',  '" .$_POST['NCivico'] . "')";
    
    
                $query_registrazione1 = mysqli_query($db, $query);
            }
            ?>
    
    
            <p>Inserisci i dati mancanti!</p>
            <form action="home.php" method="post">
            Nome: <input type="text" name="Nome" /> </br></br>
            Cognome: <input type="text" name="Cognome" /> </br></br>
            Telefono: <input type="text" name="Telefono"  /> </br></br>
            Via: <input type="text" name="Via"  /> </br></br>
            Num.Civico: <input type="text" name="NCivico"  /> </br></br>
            
           
            Comune: <select name="nome"> 
            <option>Seleziona Comune</option>
            <?php
            $query = "SELECT NomeComune FROM comune";
            $query_r = mysqli_query($db, $query);
            while ($array = mysqli_fetch_array($query_r)) { 
                $dati = $array['NomeComune']; //colonna che mi interessa
                echo '<option value="'.$dati.'">'.$dati.'</option>';
            }
            ?>
            </select> </br></br>
            <input type="submit" />
            </form>
        </body>
    </html>

  4. #4
    Cosa non funziona? Invii il modulo e cosa succede?
    Devi specificare se ti da qualche errore sennò è difficile aiutarti.
    Il modulo punta a home.php, è il nome del tuo file?

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2016
    Messaggi
    33
    Non mi da errore di nessun tipo, per quello non capisco... solamente che i valori Nome, Cognome, Telefono e NCivico, quando invio il form, non ci sono nel database... quelli inseriti nella pagina precedente di registrazione, che sono nella stessa tabella, quelli si :/ si certo, home.php è il nome della pagina principale del sito a cui voglio andare dopo il form

  6. #6
    Quote Originariamente inviata da Elia934e Visualizza il messaggio
    Non mi da errore di nessun tipo, per quello non capisco... solamente che i valori Nome, Cognome, Telefono e NCivico, quando invio il form, non ci sono nel database... quelli inseriti nella pagina precedente di registrazione, che sono nella stessa tabella, quelli si :/ si certo, home.php è il nome della pagina principale del sito a cui voglio andare dopo il form
    Allora non ti funziona perchè il modulo deve puntare ad un file che recupera i dati e li inserisce, nel tuo caso lo stesso file, così invece invii i dati a home.php che fa altro. Se lo guardi adesso il modulo ha action="?" che significa che punta allo stesso file. C' era anche un errore nella stringa sql. Una buona pratica è quella di separare la parte che esegue le operazioni, da quella che esegue l' output html.
    Cerca sempre di ragionare in questo senso:
    richiesta pagina->elaborazione file php->output html
    Poi vedo che apri una sessione inutilmente visto che poi non usi nessuna variabile di tipo $_SESSION
    Comunque prova così e vediamo che succede :unz:
    codice:
    <?php
    session_start(); // come sempre prima cosa, aprire la sessione         
    $host='localhost';        
    $user='root';        
    $password='';        
    $database='ecommerce';
    $db=mysqli_connect($host, $user, $password, $database) or die ("Impossibile connettersi al server $host");        
    mysqli_select_db($db, $database) or die ("Impossibile connettersi al database $database");        
    $formError = "";
    if (isset($_POST['Nome'],$_POST['Cognome'],$_POST['Telefono'],$_POST['NCivico'])) {
    $formError = "<p>Inserisci tutti i campi</p>";
    }
    else{         
    $query="INSERT INTO users (Nome, Cognome, Telefono, NCivico) VALUES('" .$_POST['Noi i me'] . "', '" .$_POST['Cognome'] . "', '" .$_POST['Telefono'] . "',  '" .$_POST['NCivico'] . "')";
    $query_registrazione1 = mysqli_query($db, $query);            
    //Redirect a home.php
    header("Location: home.php");                 
    }        
    ?>
    <html>      
      <head>        
        <meta charset="utf-8">        
        <link rel="stylesheet" type="text/css" href="style.css">    
      </head>        
      <body>
      <?php echo $formError;?>       
      <p>Ti sei registrato con successo</p>        
      <p>Inserisci i dati mancanti!</p>        
      <form action="?" method="post">        
      Nome: <input type="text" name="Nome" /> </br></br>        
      Cognome: <input type="text" name="Cognome" /> </br></br>        
      Telefono: <input type="text" name="Telefono"  /> </br></br>        
      Via: <input type="text" name="Via"  /> </br></br>        
      Num.Civico: <input type="text" name="NCivico"  /> </br></br>                       
      Comune: <select name="nome">         
                   <option>Seleziona Comune</option>        
                   <?php        
                   $query = "SELECT NomeComune FROM comune";        
                   $query_r = mysqli_query($db, $query);        
                   while ($array = mysqli_fetch_array($query_r)) {             
                   $dati = $array['NomeComune']; //colonna che mi interessa            
                   echo '<option value="'.$dati.'">'.$dati.'</option>';        
                   }        
                  ?>        
                  </select> </br></br>        
     <input type="submit" />        
     </form>    
     </body>
    </html>

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2016
    Messaggi
    33
    Ho provato... così non mi permette di inserire i dati mancanti... nel form di registrazione della prima pagina, premendo registrati, mi salta la seconda pagina di inserimento Nome, Cognome ecc... e va dritto a home.php che è la terza

  8. #8
    Per venirne fuori prova a fare 2 pagine per ogni inserimento che devi fare.
    Crea un file modulo_registrazione.php dove presenti il modulo che avrà action="registrazione.php". Quindi crei il file registrazione.php dove recupererai i dati dal modulo, li inserirai nel database e presenterai link alla pagina del completamento della registrazione. Per il completamento della registrazione fai la stessa cosa, un file col modulo e uno che recupera i dati e li inserisce nel DB. Se ne vieni fuori poi vediamo di creare una struttura migliore

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2016
    Messaggi
    33
    alla fine ho risolto facendo una pagina di inizio sito che mi chiede se registrarmi o loggarmi e se mi registro mi chiede tutti i campi insieme... più facile e funziona subito! tuttavia sono fermo in quest'altro punto... il comune io lo scelgo da una lista di nomi di una tabella del database... riesco a far comparire il menu con la lista ma non a passare nelle info utente da registrare, la chiave esterna del comune... Ovviamente $_POST[comune_reg] è il nome del dato che inserisco nel form della pagina precedente

    codice:
    <?php
    session_start(); // dive essere la prima cosa nella pagina, aprire la sessione
    $host='localhost';
    $user='root';
    $password='';
    $database='ecommerce';
    $db=mysqli_connect($host, $user, $password, $database) or die ("Impossibile connettersi al server $host");
    mysqli_select_db($db, $database) or die ("Impossibile connettersi al database $database");
    
    $query_comune=("SELECT idComune FROM comune WHERE NomeComune='".$_POST["comune_reg"]."')") or DIE('query non riuscita'.mysql_error());
    $_SESSION["comune"]=$_POST["comune_reg"]; 
    $query_r = mysqli_query($db, $query_comune);
    $query=("INSERT INTO users (username, password, email, Nome, Cognome, NCivico, Telefono, ksComune)" . 
        "VALUES ('".$_POST["username_reg"]."','".$_POST["password_reg"]."','".$_POST["email_reg"]."','".$_POST["nome_reg"]."','".$_POST["cognome_reg"]."','".$_POST["NCivico_reg"]."','".$_POST["telefono_reg"]."', $query_r)") 
        or die ("query di registrazione non riuscita ".mysql_error());
    
    if($_POST["username_reg"] != "" && $_POST["password_reg"]!= "" && $_POST["email_reg"] != "" && $_POST["nome_reg"] != "" && $_POST["cognome_reg"] != ""&& $_POST["NCivico_reg"] != "" && $_POST["telefono_reg"] != "") {  // se i parametri iscritto non sono vuoti 
        $query_registrazione = mysqli_query($db, $query); // se la query fallisce mostrami questo errore
    } 
    else {
        header('location:index.php?action=registration&errore=Non hai compilato tutti i campi obbligatori'); // se le prime condizioni non vanno bene entra in questo ramo else
    }
    if(isset($query_registrazione)){ //se la reg è andata a buon fine
        $_SESSION["logged"]=true; //restituisci vero alla chiave logged in SESSION
        header("location:home.php");
    } 
    else {
        echo "Non ti sei registrato con successo"; // altrimenti esce scritta a video questa stringa
    }
    ?>

  10. #10
    devi mettere l' id del comune come value dell' option, sostituisci nella query comune_id con il nome della tua primary key della tabella comune (sperando che l' hai creata):

    Codice PHP:
    $query "SELECT comune_id, NomeComune FROM comune";
    $query_r mysqli_query($db$query);
    while (
    $array mysqli_fetch_array($query_r)) { 
    echo 
    '<option value="'.$dati["comune_id"].'">'.$dati["NomeComune"].'</option>';

    Così lo recuperi con $_POST["nome"] che magari meglio se la select la chiami comuni, dai sempre un nome attinente alle variabili sennò esci pazzo, così recuperi l' id con $_POST["comuni"]. Ho qualche dubbio sulla funzione mysqli_fetch_array perchè non ricordo cosa ritorna...fammi sapere cosa succede
    Ultima modifica di camionistaxcaso; 01-12-2016 a 13:49

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.