The Best Geek Forum

Inserire form di registrazione in un sito

Hai bisogno di aiuto per il tuo codice?? Posta qui il tuo problema! Degli utenti specializzati provvederanno subito ad assisterti!

Moderatore: Moderatore in prova

per scuola stiamo creando un progetto scolastico cioè un sito che necessita di possibilità di registrazione, ma come faccio a inserire questa possibilità cosa devo fare? grazie
Salve,
Ti invito a leggere il Regolamento del Forum.
Ti ricordo di rispettare l'utilizzo dei Prefissi.
Ti invito a presentarti presso questa pagina poiché non siamo un centralino ma una Community.

Per quanto riguarda il tuo progetto vorrei sapere se stai sviluppando il sito senza alcuna piattaforma.
Il mio consiglio è di appoggiarsi sempre ad una piattaforma per semplificarsi la vita, ma in caso contrario dovresti applicare uno script in php.

Dipende dalle esigenze che hai.
Facci sapere.
Ciao, allora per prima cosa dovresti inserire un form nella tua pagina di registrazione HTML. Per inserire un form è necessario usare la seguente forma :

Codice: Seleziona tutto

<form>
	<input type="nome" >
	<input type="submit" value="Submit">
</form>
Grazie a questo codice, avrai un form che mostrerà all'utente uno spazio dove inserire il nome ed una casella da premere per inviare i dati. Io ho inserito come tipo di input una stringa come il nome, ma se vuoi esistono altri tipi di input come la scelta (cerchietti di scelta) o scelta multipla (quadratini di scelta). Una volta inserito il form e averlo personalizzato, dovrai creare una pagina PHP che prenda i dati da questo form, li controlli, li memorizzi e li inserisca in un database attraverso i comandi PHP GET e POST. Ora non so la tua traccia e se potresti darmi più informazioni potrei risponderti ed aiutarti meglio. Fammi sapere.
:thanks:
Mario ha scritto:Ciao, allora per prima cosa dovresti inserire un form nella tua pagina di registrazione HTML. Per inserire un form è necessario usare la seguente forma :

Codice: Seleziona tutto

<form>
	<input type="nome" >
	<input type="submit" value="Submit">
</form>
Grazie a questo codice, avrai un form che mostrerà all'utente uno spazio dove inserire il nome ed una casella da premere per inviare i dati. Io ho inserito come tipo di input una stringa come il nome, ma se vuoi esistono altri tipi di input come la scelta (cerchietti di scelta) o scelta multipla (quadratini di scelta). Una volta inserito il form e averlo personalizzato, dovrai creare una pagina PHP che prenda i dati da questo form, li controlli, li memorizzi e li inserisca in un database attraverso i comandi PHP GET e POST. Ora non so la tua traccia e se potresti darmi più informazioni potrei risponderti ed aiutarti meglio. Fammi sapere.
:thanks:



riguardo questo io avrei bisogno di un vero e proprio modo di effettuare una registrazione e poi effettuare una sessione con il mio specifico account
Allora come ho già detto fare una registrazione è molto semplice, creare una sessione è un po più complesso. Per prima cosa come ti dicevo, se devi creare una sessione e una registrazione, hai bisogno di un database in locale, se devi lavorare da casa, o un host gratuito, se devi presentare un sito ONLINE. Per la sessione invece dovrai usare determinati codici PHP che ti permettano di aprire una sessione e di tenerla aperta finché non si effettua il Logout . Se ti servono più informazioni specifiche su determinati passaggi o se ti servono codici dimmi cosa ti serve e provvedo.
come già accennato da Mario ti posto il codice aggiungendo un'opzione che riporta ad un file php con le istruzioni per la registrazione
File html:

Codice: Seleziona tutto

<html>
    <body>
        <form method="POST" action="file.php">
Inserisci email: <input type="text" name="email">
Inserisci Password: <input type="password" name="password">
       <input type="submit" name="submit" value="Registrati">
</form>
</body>
</html>
Esatto come ha precisato Virgula, puoi collegarti al file PHP e passare i dati del form attraverso il metodo POST. Comunque mi ero scordato prima di dirti che se vuoi creare una pagina con registrazione , devi creare una delle pagine _in e _out (cosi preferisco chiamarle io) . Le pagine _in a cui potrai essere reindirizzato una volta autorizzato il login e _out se non vieni autorizzato o se non hai ancora effettuato il Logout. Questo se intendi fare un login o una pagina completa .
Mario ha scritto:Esatto come ha precisato Virgula, puoi collegarti al file PHP e passare i dati del form attraverso il metodo POST. Comunque mi ero scordato prima di dirti che se vuoi creare una pagina con registrazione , devi creare una delle pagine _in e _out (cosi preferisco chiamarle io) . Le pagine _in a cui potrai essere reindirizzato una volta autorizzato il login e _out se non vieni autorizzato o se non hai ancora effettuato il Logout. Questo se intendi fare un login o una pagina completa .

grazie a tutti e due in pratica ci servirebbe una cosa molto particolare per l ultimo voto di informatica servirebbe inaniztutto una pagina dove tutti devono registrarsi prima di accede e quindi la possibilità che sia il computer a garantirci questa funzione poi dopo la possibilità di una tabella dove in ogni punto cliccare e comprare un determinato oggett
consigli?? soluzioni?? perche non mi riesce
Allora anche io feci una cosa del genere però applicata alla tesina d'esame. Ti posto i miei codici cosi puoi confrontare e rilevare eventuali errori .

Questo è il form che ho inserito nella pagina di registrazione :

Codice: Seleziona tutto

<div id="formsignin"><form name="inserimentoutenti" method="post" action="../php/signin-php.php">
<lable><font size="5" face="Georgia" color="WHITE">Registrati</font></lable></br></br></br>
<label><font size="3" face="Georgia" color="WHITE">Username</font></label></br></br>
<input type="text" name="txtusername" size="25" maxlenght="20"></br></br>
<label><font size="3" face="Georgia" color="WHITE">Password</font></label></br></br>
<input type="password" name="txtpassword" size="25" maxlenght="20"></br></br>
<label><font size="3" face="Georgia" color="WHITE">Nome</font></label></br></br>
<input type="text" name="txtnome" size="25" maxlenght="20" "></br></br></div>
<div id="formsignin2"><label><font size="3" face="Georgia" color="WHITE">Cognome</font></label></br></br>
<input type="text" name="txtcognome" size="25" maxlenght="20"></br></br>
<label><font size="3" face="Georgia" color="WHITE">Indirizzo E-mail</font></label></br></br>
<input type="email" name="txtemail" size="25" maxlenght="20"></br></br>
<input type="reset"  value="Resetta il form">
<input type="submit" value="Registra" >
</form></div>
Nomi dei campi o indirizzi a file sono riferiti al mio lavoro attento a non confonderli, ho racchiuso l'intero form in un DIV per poterlo spostare facilmente nel CSS se vuoi puoi togliere il DIV.

Questo invece riguarda l'inserimento su signin-php ovvero l'estrazione dei dati dalla pagina precedente e la conferma di effettuata registrazione.

Codice: Seleziona tutto

<?php

include("config.php");

$username = $_POST['txtusername'];
$password = $_POST['txtpassword'];
$nome = $_POST['txtnome'];
$cognome = $_POST['txtcognome'];
$email = $_POST['txtemail'];
$sql = "INSERT INTO `my_esamidistatopalese`.`iscrizioni` (`id`, `username`, `password`, `nome`, `cognome`, `email`) 
VALUES (NULL, '$username', '$password', '$nome', '$cognome', '$email')";
mysql_query($sql);
if($sql == true){print("inserimento riuscito");}
else{print("inserimento non riuscito");}

?>
Queste sono le cose principali, se hai bisogno di altro specifica o se non capisci qualcosa chiedi.
PS. Non ho capito la seconda richiesta, maggiori informazione grazie .
Allora è molto semplice.

Passo 1) Creazione della tabella users

Dopo esserti creato un database, e uno spazio, ad esempio altervista, connettendoti a phpmyadmin inserisci questa query

Codice: Seleziona tutto

CREATE TABLE users (
           uid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
           username varchar(255) NOT NULL,
           password char(32) NOT NULL,
           email varchar(255) NOT NULL
           ) DEFAULT CHARACTER SET UTF8 ENGINE=InnoDB
Passo 2) Creazione del file config.php

In questa fase si creerà un file che gestirà tutto il processo di connessione al database
Crea quindi un file, config.php e inserisci il seguente codice:

Codice: Seleziona tutto

<?php

$host_name= "localhost";
$db_name= "NOMEDELTUODATABASE";
$db_user = "NOMEUTENTEPERACCEDEREALDB";
$db_psw = "PASSWORDPERACCEDEREALDB";
$sitename= "NOMEDELTUOSITOSENZAHTTP" /* ad esempio non http://www.tebigeek.com ma semplicemente tebigeek.com */

try
{
  $pdo = new PDO('mysql:host='.$host_name.';dbname='.$db_name.'', ''.$db_user.'', ''.$db_psw.'');
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $pdo->exec('SET NAMES "utf8"');

}
catch (PDOException $e)
{
  $error = 'Impossibile connettersi al database MySQL.';
  echo $e->getMessage();
  echo $error;
  exit();
 } 

Passo 3) Creazione del controller register.php

In questa fase creerai il controller register.php per registrare un utente al tuo sito, userai inclusioni, sessioni. try-catch, if, else e altra roba, se vuoi, puoi cercare di capire il seguente codice, altrimenti copia ed incolla semplicemente.

Codice: Seleziona tutto

<?php

require('config.php'); /* Per la connessione.... */

function generateRandomString($length = 10) {

  $chars = '01234abcdefghijklmnopqrstuvzABCDEFGHIJKLMNOPQRSTUVZ5678';
  $charsLength = strlen($chars);
  $randomStr = '';
  for($i = 0; $i<$length;$i++) {
     
     $randomStr .= $chars[rand(0, $charsLength - 1)];

  }

    return $randomStr;

}

 if(isset($_GET['action']) && $_GET['action']== 'reg' && ! isset($_POST['action'])) {
            
            echo "Non puoi raggiungere questo link direttamente!";

            exit();

          } 


if(! isset($_POST['username']) && ! isset($_GET['action'])) {
       
       $GLOBALS['regError'] = '';

       include 'register.html.php';

  }


elseif(isset($_GET['action']) && $_GET['action'] == 'reg') {
 
 require('config.php');

                         global $pdo;

                         $psw = MD5($_POST['password'] . 'mypcms');

                         try {

                    	$sql = 'SELECT username,email,password FROM users WHERE username=:nick OR email=:email OR password=:pass;';
                    	$s=$pdo->prepare($sql);
                    	$s->bindValue(':nick', $_POST['username']);
                    	$s->bindValue(':email', $_POST['email']);
                    	$s->bindValue(':pass', $psw);
                    	$s->execute();

                    	
                    } catch (PDOException $e) {

                    	echo "".$e->getMessage()."";
                    	exit();
                    	
                    }

                    $row = $s->fetch();

                    if($row) {
                       
         $GLOBALS['regError'] = "Username, Password o Email già in uso!";

         include 'register.html.php';
        

                    }

                    else {

                  

                  $code = generateRandomString();
                  $email = $_POST['email'];
                  $username = $_POST['username'];
                  $saltedpsw = $psw;

                  // Mail

                  global $sitename;

                  $to = $email;
                  $subject = "Conferma Registrazione sul ".$sitename."";

                  $content = "Benvenuto nel nostro sito ".$username."!!!

                  Sei ora registrato al sito ".$sitename."!

                  Tuttavia per maggiore sicurezza ti invitiamo ad accedere al seguente link:   http://".$sitename."/member.php?action=confirm&username=".$username."&code=".$code."&psw=".$saltedpsw."&email=".$email."

                  Potrai così confermare la tua registrazione inserendo le seguenti credenziali:

                  Username = ".$username."
                  Codice di conferma = ".$code."

                  Grazie per esserti registrato! Ti aspettiamo! ;)";

                mail($to, $subject, $content);

                echo "Ti sei registrato, una mail è stata inviata a  ".$email." ! ";
                    
                    include 'member.php';


                    }



                    
          }

Passo 4) Creazione di member.php

In questo passo ci occuperemo di creare member.php un file che servirà a confermare la registrazione del nostro utente.

Codice: Seleziona tutto

<?php

if(isset($_POST['actnick']) && $_POST['actnick'] == $_GET['username'] && isset($_POST['actcode']) && $_POST['actcode'] == $_GET['code'] && isset($_POST['action']) && $_POST['action'] == 'Procedi!') {
                                    
                                    require('config.php');
                                    global $pdo;

                                    $usr = $_GET['username'];
                                    $psw = $_GET['psw'];
                                    $mail = $_GET['email'];

                                    try {

                                      $sql = 'INSERT INTO users SET username=:nick, password=:psw, email=:email';
                                      $s=$pdo->prepare($sql);
                                      $s->bindValue(':nick', $usr);
                                      $s->bindValue(':psw', $psw);
                                      $s->bindValue(':email', $mail);
                                      $s->bindValue(':time', time());
                                      $s->bindValue(':zero', '0');
                                      $s->execute();
                                      
                                    } catch (PDOException $e) {

                                      echo "".$e->getMessage()."";
                                      exit();
                                      
                                    }  

						          header('Location: forum.php');

                                 exit();  // Stop, please.         

                         }

                         elseif(isset($_GET['action']) && $_GET['action'] == 'confirm' && isset($_GET['code']))

                    {
                           
                           include 'confirm_reg.html.php';
                           exit();
                           

                    }

Passo 5) Creazione dei file da includere

I file da includere, sono file "templates" ovvero dell'html puro che richiameremo con i nostri codici php.

Inanzitutto, register.html.php.

Cosa sarà register.html.php? Un semplice form dove inviare i dati che verranno gestiti da PHP

Codice: Seleziona tutto

<html>
                       <head><title>Registrati!</title></head>
                       <body>
                       	<h1>Registrati ed entra nel sito!</h1>
                       	<?php if(isset($regError)): ?>
                       	<p><?php echo $regError ?></p>
                       	<?php endif; ?>
                       	<form action="?action=reg" method="post">
                       		<div>
                       		<label for="username">Username</label>
                       		<input type="text" class="textbox" name="username" id="username" autofocus required>
                       	</div>
                       	<br />
                       	<div>
                       		<label for="email">Email</label>
                       		<input type="email" class="textbox" name="email" id="email" autofocus required>
                       	</div>
                       	<br />
                       	<div>
                       		<label for="password">Password</label>
                       		<input type="password" class="textbox" name="password" id="password" autofocus required>
                       	</div>
                       	<br />
                       	<input type="submit" name="action" id="action" value="Registrati!">
                       </form>
                   </body>
                   </html>

Ed ora confirm_reg.html.php il file che si occuperà di confermare la registrazione del nostro utente.

Codice: Seleziona tutto

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Conferma!</title>
  </head>
  <body>
    <h1>Conferma la tua registrazione!</h1>
    <p>Immetti le tue credenziali per confermare la tua registrazione!</p>
    <form action="" method="post">
      <div>
        <label for="actnick">Username:</label>
         <input type="text" name="actnick" id="actnick">
      </div>
      <div>
        <label for="actcode">Codice di conferma:</label>
         <input type="actcode" name="actcode" id="actcode">
      </div>
      <div>
        <input type="submit" name="action" id="action" value="Procedi!">
      </div>
    </form>
  </body>
</html>

A questo punto l'utente è registrato e i suoi dati appariranno nella tabella users.

Vuoi anche un login system?

Dimmi tu, ciao.