Progetto per maturità ?

di il
80 risposte

80 Risposte - Pagina 5

  • Re: Progetto per maturità ?

    Allora ho fatto il login:
    login:
    <script>
    function controllo(){
    	
    	if(document.modulo.username.value == ""){
    		alert("Inserisci tutti i campi");
    		return false;
    	}
    	
    	if(document.modulo.password.value == ""){
    		alert("Inserisci tutti i campi");
    		return false;
    	}
    	
    return true;
    }
    </script>
    <html>
    <head>
    <title>
    Login 
    </title>
    </head>
    <body>
    <h2 align="center">Benvenuto!</h2><br>
    
    <h3 align="center">Inserisci le tue credenziali per accedere</h3>
    
    <p>
    <form action="homepage.php" method="post" align="center" name="modulo" OnSubmit="return(controllo());">
    
    Username<input type="text" name="username" maxlength="20"><br>
    Password<input type="password" name="password" maxlength="12"><br>
    <input type="submit" value="Invio">
    
    </form>
    
    Non sei ancora registrato? <a href="registrazione.php">Registrati!</a>
    </p>
    
    
    
    </body>
    </html>
    verifica dei dati:
    <?php
    $username = $_POST["username"];
    $password = $_POST["password"];
    ?>
    <html>
    <head>
    <title>
    Home-Page
    </title>
    </head>
    <body>
    <?php
    $db_nome='scuola-questionario';
    $db_usern='root';
    $db_psw="";
    $db_host="localhost";
    $tab_nome='utente';
    $connessione =
    @mysqli_connect("$db_host","$db_usern","$db_psw","$db_nome")or
    die("Connessione non riuscita: " . mysqli_error());
    print ("Connesso con successo");
    
    $query="SELECT * FROM $tab_nome WHERE utente.USERNAME LIKE '%$username%' AND utente.PASSWORD LIKE '%$password%'";
    $result = mysqli_query($connessione,$query);
    $row=mysqli_fetch_array($result);
    if(!$result){
    	echo "<p>Errore, username e password non corretti!</p>";
    }else{
    	echo "<p>Benvenuto $row[1]$row[2]</p>";//NOME E COGNOME
    }
    
    
    ?>
    </body>
    </html>
    il codice funziona, ho inserito una istanza nel db e ho verificato inserendo username e password, però non so se è giusto.. la login e la verifica forse sarebbe il caso di farla in una pagina sola e poi se la verifica da true, visualizzo la pagina homepage passando con _POST i dati altrimenti rimano nella pagina del login e visualizzo il messaggio di errore, come accade nei forum, anzi, vorrei proprio fare come accade nei forum!
  • Re: Progetto per maturità ?

    Se vuoi sì.
  • Re: Progetto per maturità ?

    http://www.phpnews.it/articoli/login-con-php/http://www.phpnews.it/articoli/login-con-php/
    ho trovato questo codice su questo sito.. potrebbe andare?
  • Re: Progetto per maturità ?

    Allora ho fatto un po' di cose.. :
    pagina: login.php
    <script>
    function controllo(){
    	
    	if(document.modulo.username.value == ""){
    		alert("Inserisci tutti i campi");
    		return false;
    	}
    	
    	if(document.modulo.password.value == ""){
    		alert("Inserisci tutti i campi");
    		return false;
    	}
    	
    return true;
    }
    </script>
    <html>
    <head>
    <title>
    Login 
    </title>
    </head>
    <body>
    <h2 align="center">Benvenuto!</h2><br>
    
    <h3 align="center">Inserisci le tue credenziali per accedere</h3>
    
    <div align="center">
    
    <form action=".\elogin.php" method="post" align="center" name="modulo" OnSubmit="return(controllo());">
    <table align="center">
    	<tr>
    		<td>
    			Username
    		</td>
    		<td>
    			<input type="text" name="username" maxlength="20">
    		</td>
    	</tr>
    	<tr>
    		<td>
    			Password
    		</td>
    		<td>
    			<input type="password" name="password" maxlength="12">
    		</td>
    	</tr>
    </table>
    <input type="submit" value="Accedi">
    
    </form>
    <?php
    if(isset($_GET['errore'])){
    	echo"<p style= 'font-weight: bold; color: red;'>";
    	switch($_GET['errore']){
    		case 1: echo"Non sei registrato!";
    			break;
    		case 2: echo"Registrazione avvenuta con successo!";
    			break;
    	}
    	
    	echo"</p>";
    }
    
    ?>
    <p>
    Non sei ancora registrato? <a href=".\registrazione.php">Registrati!</a>
    </p>
    
    </div>
    
    
    
    </body>
    </html>
    pagina: elogin.php
    <?php
    session_start();
    
    $username = $_POST["username"];
    $password = $_POST["password"];
    ?>
    <html>
    <head>
    <title>
    elogin
    </title>
    </head>
    <body>
    <?php
    
    echo "$username";
    echo "$password";
    
    $db_nome='scuola-questionario';
    $db_usern='root';
    $db_psw="";
    $db_host="localhost";
    $tab_nome='utente';
    $connessione =
    @mysqli_connect("$db_host","$db_usern","$db_psw","$db_nome")or
    die("Connessione non riuscita: " . mysqli_error());
    //print ("Connesso con successo");
    
    $query="SELECT IDUTENTE,PASSWORD FROM `utente` WHERE USERNAME LIKE '$username'";
    $result = mysqli_query($connessione,$query);
    
    if($riga=mysqli_fetch_assoc($result)){
    	$autenticato = ($password === $riga['PASSWORD']);
    }else{
    	$autenticato = false;
    }
    mysqli_close($connessione);
    
    if($autenticato){
    	//echo"benvenuto";
    	$_SESSION['IDUTENTE'] = $riga['IDUTENTE'];
    	mysqli_close($connessione);
    	header("Location: .\homepage.php");
    }else{
    	//echo"benvenuto u cazz";
    	mysqli_close($connessione);
    	header("Location: .\login.php?errore=1");//autenticazione fallita
    	exit;
    }
    
    
    ?>
    </body>
    </html>
    pagina: registrazione.php
    <script>
    function controllo(){
    	
    	if(document.modulo.nome.value == ""){
    		alert("Inserisci tutti i campi");
    		return false;
    	}
    	
    	if(document.modulo.cognome.value == ""){
    		alert("Inserisci tutti i campi");
    		return false;
    	}
    	
    	if(document.modulo.sesso.value == ""){
    		alert("Inserisci tutti i campi");
    		return false;
    	}
    	
    	if(document.modulo.classe.value == ""){
    		alert("Inserisci tutti i campi");
    		return false;
    	}
    	
    	if(document.modulo.citta.value == ""){
    		alert("Inserisci tutti i campi");
    		return false;
    	}
    	
    	if(document.modulo.username.value == ""){
    		alert("Inserisci tutti i campi");
    		return false;
    	}
    	
    	if(document.modulo.password.value == ""){
    		alert("Inserisci tutti i campi");
    		return false;
    	}
    	
    	if(document.modulo.password2.value == ""){
    		alert("Inserisci tutti i campi");
    		return false;
    	}
    	
    	
    	if(document.modulo.mail.value == ""){
    		alert("Inserisci tutti i campi");
    		return false;
    	}
    	
    	if(document.modulo.password.value != document.modulo.password.value){
    		alert("Errore: le password inserite non sono uguali");
    		return false;
    	}
    	
    return true;
    }
    </script>
    <html>
    <head>
    <title>
    Registrazione
    </title>
    </head>
    <body>
    <h2 align="center">Form di registrazione</h2>
    
    <div align="center">
    
    <form action=".\eregistrazione.php" method="post" align="center" name="modulo" OnSubmit="return(controllo());">
    <table align="center">
    	<tr>
    		<td>
    			Nome
    		</td>
    		<td>
    			<input type="text" name="nome" maxlength="20">
    		</td>
    	</tr>
    	<tr>
    		<td>
    			Cognome
    		</td>
    		<td>
    			<input type="text" name="cognome" maxlength="20">
    		</td>
    	</tr>
    	<tr>
    		<td>
    			Sesso
    		</td>
    		<td>
    			<input type="radio" name="sesso" value="M">M
    			<input type="radio" name="sesso" value="F">F
    		</td>
    	</tr>
    	<tr>
    		<td>
    			Classe
    		</td>
    		<td>
    			<input type="text" name="classe" maxlength="7">
    		</td>
    	</tr>
    	<tr>
    		<td>
    			Citt&agrave;
    		</td>
    		<td>
    			<input type="text" name="citta" maxlength="10">
    		</td>
    	</tr>
    	<tr>
    		<td>
    			Username
    		</td>
    		<td>
    			<input type="text" name="username" maxlength="20">
    		</td>
    	</tr>
    	<tr>
    		<td>
    			Password
    		</td>
    		<td>
    			<input type="password" name="password" maxlength="12">
    		</td>
    	</tr>
    	<tr>
    		<td>
    			Reinserisci la password
    		</td>
    		<td>
    			<input type="password" name="password2" maxlength="12">
    		</td>
    	</tr>
    	
    	<tr>
    		<td>
    			E-Mail
    		</td>
    		<td>
    			<input type="text" name="mail" maxlength="30">
    		</td>
    	</tr>
    	
    </table>
    <input type="submit" value="Registrati">
    
    </form>
    
    <?php
    if(isset($_GET['errore'])){
    	echo"<p style= 'font-weight: bold; color: red;'>L'email appena inserita sembra essere già registrata!</p>";
    }
    
    
    ?>
    Torna alla <a href=".\login.php">login</a>
    </div>
    
    </body>
    </html>
    pagina: eregistrazione.php
    <html>
    <head>
    <title>
    Inserimento studente
    </title>
    </head>
    <body>
    <?php
    $db_nome='scuola-questionario';
    $db_usern='root';
    $db_psw="";
    $db_host="localhost";
    $tab_nome='utente';
    $connessione =
    @mysqli_connect("$db_host","$db_usern","$db_psw","$db_nome")or
    die("Connessione non riuscita: " . mysqli_error());
    
    $query =" select * from utente where MAIL like '$mail'";
    $result1 = mysqli_query($connessione,$query);//risultato della query
    if($result){//se è true, allora l'email è gia registrata
    	//messaggio di errore
    	header("Location: .\registrazione.php?errore=1");
    	mysqli_close($connessione);
    }else{
    	//si può registrate lo studente
    	$query="INSERT INTO `utente`(`IDUTENTE`, `NOME`, `COGNOME`, `CITTA`, `USERNAME`, `PASSWORD`, `CLASSE`, `MAIL`, `SESSO`, `TIPO`) VALUES ('NULL','$nome','$cognome','$citta','$username','$password','$classe','$mail','$sesso','S')";
    	$result1 = mysqli_query($connessione,$query);//risultato della query
    	header("Location: .\login.php?errore=2");
    	mysqli_close($connessione);
    }
    
    
    
    
    ?>
    </body>
    </html>
    pagina: homepage.php
    <?php
    session_start();
    if(		!isset($_SESSION['IDUTENTE'])){
    	header("Location: .\login.php");
    }
    
    $id = $_SESSION['IDUTENTE'];
    
    ?>
    <html>
    <head>
    <title>
    Home page
    </title>
    </head>
    <body>
    <?php
    /*session_unset();
    session_destroy();*/
    
    echo "$id";
    
    
    ?>
    </body>
    </html>
    A quanto pare, sono riuscito a gestire il login e la registrazione.. con degli avvisi.. la home page è vuota, perchè vorrei capire un po di cose. Per la registrazione invece, l'ho fatta solo per lo studente perchè nasce poi il problema di autenticare il professore( quindi il professore verrà inserito manualmente nell'interfaccia phpmyadmin così ci togliamo il problema ahah ), l'inserito funziona, il controllo dell'email funziona.. adesso basta solo iniziare a lavorare sulla homepage.php che come vedi, è vuota
  • Re: Progetto per maturità ?

    In generale va bene. Si potrebbero fare delle migliorie, ma alcune probabilmente risulterebbero troppo avanzate e "sospette" date le tue conoscenze attuali. Le uniche 2 cose che potresti fare sarebbero riunire tutti i controlli (username=='', password='', ecc.) in un unico if, mettendoli in or, e sostituire la tabella dentro cui metti i vari campi del form con dei div o degli accapo (ma questa è una finezza).

    Ti consiglio inoltre di memorizzare nella sessione anche il tipo di utente (prof. o studente) e di mettere in dei file header.php e footer.php le parti iniziale e finale delle varie pagine, che tanto si ripetono sempre uguali.
  • Re: Progetto per maturità ?

    Ascolta, quindi devo creare 2 file che contengono le parti che verranno ripetute sia per l'interfaccia dell'utente e sia per quella del professore.. ma cosa ci metto in queste pagine? A me non viene nulla in mente..
    comunque, avevo pensato di fare 2 homepage diverse, una per il prof e una per lo studente.. tipo homepage.php per prof e homepage2.php per lo studente, ma forse non è corretto?
    Poi, hai parlato di controlli, parli di quelli che ci sono nello script? il controllo della form giusto?
  • Re: Progetto per maturità ?

    Ci puoi mettere intanto l'intestazione html (quindi i tag html, header, title, body, eventuali script e css esterni da richiamare in tutte le pagine) e il controllo per verificare che chi è entrato in una pagina "interna" sia un utente loggato (controlli la sessione).
    Nella homepage metterei, nel caso del professore, l'elenco dei questionari compilati e un link che porta alla creazione di un altro questionario, mentre nel caso dello studente l'elenco dei questionari a cui ha accesso. Quindi puoi fare un unico file dove, in base a un if che controlla il tipo di utente (che come detto prima puoi memorizzare nella sessione) selezioni i questionari appropriati e mostri l'eventuale link che porta alla creazione di un nuovo questionario.

    Riguardo i controlli, sì, intendo quelli.
  • Re: Progetto per maturità ?

    Okay ho capito, ma quindi tu dici di creare dei frame? 2 frame, uno in alto che carica la pagina header.php e uno in basso che carica la pagina foot.php..
    Comunque con i css io proprio non so metterci mano.. ho visto il link che mi hai dato, bootstrap, ma non ci ho capito niente su come si usa.. Comunque, creo una istanza di tipo P (professore ) così provo innanzitutto a vedere il controllo, quindi poi ci metto tipo 2 link, 1: visualizza questionari e 2: crea questionari
    Mentre per lo studente un solo link? con tipo: visualizza questionari disponibili ( e poi da li la lista dei questionari che si possono rispondere dato che ci possono essere più di 1 nello stesso momento e poi per poter rispondere bisogna inserire il codice .. )
    Comunque, potrei dare al professore la possibilità di togliere un questionario, nel senso che dopo che gli studenti hanno risposto, il professore toglie la possibilità di rispondere ( dato che hanno risposto tutti )
    poi, quando uno studente risponde al questionario non dovrebbe più avere la possibilità di rispondere al questionario..
  • Re: Progetto per maturità ?

    No, l'header e il footer li includi usando le funzioni php require(), require_once(), include() o include_once().
    poi, quando uno studente risponde al questionario non dovrebbe più avere la possibilità di rispondere al questionario..
    A questo serve il codice. Ora non mi ricordo come avevamo fatto la tabella COLLEGA, ma una volta che lo studente ha risposto, o cancelli il record contenente il codice usato, oppure lo marchi con un flag.
    Comunque, potrei dare al professore la possibilità di togliere un questionario, nel senso che dopo che gli studenti hanno risposto, il professore toglie la possibilità di rispondere ( dato che hanno risposto tutti )
    Anche qui, non mi ricordo com'è fatta la tabella QUESTIONARIO, comunque, o usi un campo contenente la data di scadenza del questionario (in questo modo, il professore potrebbe anche stabilire a priori quando chiudere il questionario) oppure metti anche qui un flag.
  • Re: Progetto per maturità ?

    Comunque il sito.. con 2 link.. sembra veramente povero.. anche se comunque, non saprei cos'altro metterci dato che comunque la sua funzione è quella di creare e rispondere ai questionari quindi secondo me le pagine header.php e foot.php sono inutili.. non saprei neanche cosa metterci..
    comunque, non esiste una tabella COLLEGA ma esiste la tabella COMPILA:
    COMPILA ( IDQUESTIONARIO; IDSTUDENTE;CODICE)
    quindi per la visualizzazione dei questionari non risposti potrei fare in questa maniera:
    - controllo la tabella QUESTIONARIO
    - prendo l'id del questionario e vado a verificare se nella tabella COMPILA è presente il questionario con l'id dell'utente ( lo ricavo dalla sessione )
    - se è presente vuol dire che ha risposto già quindi non visualizzo nulla
    - se invece non è presente l'id dell'utente, vuol dire che deve ancora rispondere e quindi visualizzo

    Mentre per una eliminazione automatica del questionario potrei inserire un altro campo nella tabella QUESTIONARIO come dici tu, lo chiamo tipo DATACHIUSURA..
    e faccio così:
    - visualizzo solo i questionari che sono validi nel senso che prendo DATACHIUSURA e controllo la data attuale del sistema, se DATACHIUSURA è >= della data del sistema allora visualizzo altrimenti non visualizzo il questionario
    poi ovviamente a questo passaggio va aggiunto i passaggi che ho elencato prima, che dici?
    tutto in php ovviamente
  • Re: Progetto per maturità ?

    
    - se è presente vuol dire che ha risposto già quindi non visualizzo nulla
    - se invece non è presente l'id dell'utente, vuol dire che deve ancora rispondere e quindi visualizzo 
    L'id utente è sempre presente perché fa parte della chiave primaria. Semplicemente, cerchi se esiste il record associato al questionario selezionato e all'utente che hai in sessione, per cui:
    - se il record esiste, l'utente può vedere e rispondere al questionario;
    - se non esiste, l'utente ha già risposto oppure non ha niente a che fare con quel questionario;

    Ciò vuol dire che dopo che l'utente ha risposto devi cancellare il record nella tabella COMPILA.

    Quanto alla home page, volendo puoi già mostrare lì l'elenco dei questionari creati (nel caso del prof.) o a cui si può rispondere (nel caso dello studente) anziché mettere un link ad un altra pagina.
  • Re: Progetto per maturità ?

    Già, protrei visualizzare direttamente i questionari disponibili.. comunque provo a fare qualcosa e ci sentiamo! Comunque dovrei fare anche il logout
  • Re: Progetto per maturità ?

    Ho fatto qualcosa per la homepage:
    <?php
    session_start();
    if(		!isset($_SESSION['IDUTENTE'])){
    	header("Location: .\login.php");
    }
    
    $id = $_SESSION['IDUTENTE'];
    
    ?>
    <html>
    <head>
    <title>
    Home page
    </title>
    </head>
    <body>
    <?php
    date_default_timezone_set('UTC');
    /*session_unset();
    session_destroy();*/
    
    $db_nome='scuola-questionario';
    $db_usern='root';
    $db_psw="";
    $db_host="localhost";
    $tab_nome='utente';
    $connessione =
    @mysqli_connect("$db_host","$db_usern","$db_psw","$db_nome")or
    die("Connessione non riuscita: " . mysqli_error());
    
    $query="SELECT NOME,COGNOME,TIPO,SESSO FROM `utente` WHERE IDUTENTE LIKE '$id'";
    $result = mysqli_query($connessione,$query);
    
    $riga=mysqli_fetch_assoc($result);
    $nome=$riga['NOME'];
    $cognome = $riga['COGNOME'];
    $sesso = $riga['SESSO'];
    
    if($riga['TIPO']=='S'){
    	//studente
    	if(sesso =='F'){
    		echo"Benvenuta $nome $cognome";
    	}else{
    		echo"Benvenuto $nome $cognome";
    	}
    	//lo studente può vedere tutti i questionari disponibili quindi:
    	//visualizzazione dei questionari disponibili:
    	$data = date('d m Y');//data attuale
    	//echo"$data";
    	$query="SELECT * FROM `questionario` where DATASCADENZA <= '$data'";
    	$result = mysqli_query($connessione,$query);
    	if($result){
    		echo"<h2 align=\"center\">Questionari disponibili</h2>";
    		echo"<table align=\"center\">";
    		echo"<tr><td>Nome questionario</td><td>Data scadenza</td><td>Rispondi</td></tr>";
    		//se true vuol dire che ha trovato questionari
    		while($row=mysqli_fetch_array($result)){
    			echo"<tr>";
    				echo"<td>$row['NOME']</td>";
    				echo"<td>$row['DATASCADENZA']</td>";
    				echo"<td></td>";
    			echo"</tr>";
    		}
    		echo"</table>";
    	}else{
    		//non ha trovato nulla
    		echo"Non sono presenti questionari";
    	}
    }else{
    	//professore
    	if(sesso =='F'){
    		echo"Benvenuta professoressa  $nome $cognome";
    	}else{
    		echo"Benvenuto professore $nome $cognome";
    	}
    	
    	//visualizzazione dei questionari creati dal professore
    	$query="SELECT * FROM `questionario` where IDUTENTE = '$id'";
    	$result=mysqli_query($connessione,$query);
    	if($result){
    		//se è true vuol dire che il prof ha creato qualche questionario
    		echo"<h2 align=\"center\">Questionari creati</h2>";
    		echo"<table align=\"center\">";
    		echo"<tr><td>Nome questionario</td><td>Data scadenza</td><td>Studenti che hanno risposto</td><td>Scarica file</td></tr>";
    		//se true vuol dire che ha trovato questionari
    		while($row=mysqli_fetch_array($result)){
    			echo"<tr>";
    				echo"<td>$row['NOME']</td>";
    				echo"<td>$row['DATASCADENZA']</td>";
    				echo"<td></td>";//studenti che hanno risposto
    				echo"<td></td>";//file da scaricare per visualizzare l'esito del questionario
    			echo"</tr>";
    		}
    		echo"</table>";
    		
    	}else{
    		echo"Non hai creato nessun questionario";
    		
    	}
    	
    }
    
    mysqli_close($connessione);
    
    ?>
    </body>
    </html>
    ti dico la verità, non l'ho testata anche se sembra funzionante... no l'ho testata perchè dovrei creare dei questionari
    te che ne pensi?
    Ovviamente devo aggiungerci altre cose.. tipo la possibilità di modificare username e password.. l'email.. il logout e poi vorrei capire come contare gli studenti che hanno risposto al questionario..
    per fare il logout distruggo la sessione semplicemente? con queste istruzioni:
    /*session_unset();
    session_destroy();*/
    se faccio così:
    echo"<input  type=\"button\" value=\"logout\" onclick=\"logout();\"/>"
    
    <?php
    function logout(){
    session_unset();
    session_destroy();
    header ("Location: .\login.php");
    }
    
    ?>
    
    
    riesco ad accedere alla funzione ed a uscire dalla sessione?
  • Re: Progetto per maturità ?

    Nel primo codice, nel caso dello studente devi selezionare solo i questionari per cui ha un codice. Tu invece filtri solo in base alla data di scadenza.

    Per quel che riguarda il logout, mi sembra ok, ma provalo.
  • Re: Progetto per maturità ?

    dvaosta ha scritto:


    Nel primo codice, nel caso dello studente devi selezionare solo i questionari per cui ha un codice. Tu invece filtri solo in base alla data di scadenza.
    scusami non ho capito, dici di visualizzare i questionari che lo studente può rispondere? Nel senso che possiede il codice per rispondere?
    Io invece pensavo di visualizzare tutti i questionari.. poi con un bottone tipo: "rispondi" linko in un'altra pagina dove inserisco il codice e rispondo
    che ne dici?
    Comunque, puoi dirmi quale va bene per il nostro db come vincolo di integrità referenziale sia in update e delete ? Perchè io ho messo cascade a tutto, sia in up che in delete ..

    Comunque per il logout ho risolto così:
    <?php
    if(isset($_POST['esci'])){
    session_unset();
    session_destroy();
    
    header("Location: .\login.php");
    exit;
    }
    
    ?>
    
    <form action="#" method="post"  name="modulo">
    <input type="submit" name="esci" value="Logout">
    </form>
Devi accedere o registrarti per scrivere nel forum
80 risposte