Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Creare Login php che controlla i dati su database!

    Su internet ho trovato un guida su come registrare dei nick e salvarli sul database. Il mio problema ora è creare un login. Ecco i file.

    configurazione.php
    Codice PHP:
    <? // connettiamoci il nostro database $db_host = "localhost"; $db_user = "user; $db_password = ""; $db_name = "my_user"; //connetto il database $db = mysql_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione'); mysql_select_db($db_name, $db) or die ('Errore durante la selezione del db'); ?>
    install.php
    Codice PHP:
    <?php include ('configurazione.php'); mysql_query("CREATE TABLE 'utenti' ( 'id' INT( 40 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , 'nick' VARCHAR( 255 ) NOT NULL , 'nome' VARCHAR( 255 ) NOT NULL , 'mail' VARCHAR( 255 ) NOT NULL , 'pass' VARCHAR( 255 ) NOT NULL ) ENGINE = MYISAM") or die ("Errore durante la connessione"); echo "Installazione avvenuta con successo"?>
    registrazione.php
    Codice PHP:
    <?php // includiamo il file di connessione al database include ('configurazione.php'); // creiamo il nostro modulo di registrazione ?> <form action='?inviodati=ok' method='POST'> [b]Nome[/b]
     <input type='text' name='nome'>
     [b]NickName[/b]
     <input type='text' name='nickname'>
     [b]Mail[/b]
     <input type='text' name='mail'>
     [b]Password[/b]
     <input type='password' name='pass'>
     [b]Ripeti Password[/b]
     <input type='password' name='pass2'>
     <input type='submit' value='Completa Registrazione'>
     </form> <?php // attraverso un if controlliamo che il form sia stato inviato if ( $_GET['inviodati'] == "ok" ) { // recuperiamo i dati inviati con il form $nome = $_POST['nome']; $nickname = $_POST['nickname']; $mail = $_POST['mail']; $pass1 = $_POST['pass']; $pass2 = $_POST['pass2']; // ora controlliamo che i campi siano stati tutti compilati if ( $nome == TRUE && $mail == TRUE && $nickname == TRUE && $pass1 == TRUE && $pass2 == TRUE ) { // controlliamo se il campo mail è stato scritto in maniera errata $email = eregi("^[_a-z0-9+-]+(.[_a-z0-9+-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+$",$mail); if ( $email == TRUE ) { // controlliamo se l'mail è presente già nel database $sql = mysql_query("SELECT * FROM utenti WHERE mail = '$mail'") or die ("Mail già occupata"); $num_rows = mysql_num_rows($sql); if ( $num_rows == 0 ) { // ora controlliamo che le password inserite siano identiche if ( $pass1 == $pass2 ) { // infine criptiamo la password con md5 $pass_md5 = md5($pass1); $nickname = mysql_real_escape_string($nickname); $nome = mysql_real_escape_string($nome); mysql_query("INSERT INTO utenti (id , nick , nome , pass , mail ) VALUES ('','$nickname', '$nome', '$pass_md5', '$mail' )") OR DIE(mysql_error()); // e inviamo una mail con la riuscita registazione mail ($mail, "Registrazione OK", "Complimenti registrazione effettuata con successo", "From: [email]tuamail@host.form[/email]ato"); // messaggio da far visualizzare all'utente finale echo "Complimenti registrazione effettuata con successo."; } else { echo "Le password non corrispondono"; } } else { echo "Indirizzo mail già utilizzato."; } } else { echo "La tua mail non è idonea, per la registrazione."; } } else { echo "Tutti i campi sono obbligatori."; } } ?>
    Mi funziona bene! Mi registra i dati all' interno del database! Però poi non sò come creare un login. Cioè il login l' ho fatto. Ma come posso far controllare se i dati sono giusti??

  2. #2
    riformatta il codice e rendilo più leggibile...


    che conoscenze hai di PHP??
    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Allora ho riaggiustato il tutto! Ora ti mostro tutti i file! E Il login che ho sviluppato! Che però mi dà sempre login errato!

    install.php

    <?php include ('configurazione.php'); mysql_query("CREATE TABLE `tabella_registrati` ( `id` INT( 40 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `nick` VARCHAR( 255 ) NOT NULL , `nome` VARCHAR( 255 ) NOT NULL , `mail` VARCHAR( 255 ) NOT NULL , `pass` VARCHAR( 255 ) NOT NULL ) ENGINE = MYISAM") or die ("Errore durante la connessione"); echo "Installazione avvenuta con successo"; ?>

    configurazione.php
    <? // connettiamoci il nostro database $db_host = "localhost"; $db_user = "ralph007"; $db_password = ""; $db_name = "my_ralph007"; //connetto il database $db = mysql_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione'); mysql_select_db($db_name, $db) or die ('Errore durante la selezione del db'); ?>

    registrazione.php
    <?php // includiamo il file di connessione al database include ('configurazione.php'); // creiamo il nostro modulo di registrazione ?> <form action='?inviodati=ok' method='POST'> Nome
    <input type='text' name='nome'>
    NickName
    <input type='text' name='nickname'>
    Mail
    <input type='text' name='mail'>
    Password
    <input type='password' name='pass'>
    Ripeti Password
    <input type='password' name='pass2'>
    <input type='submit' value='Completa Registrazione'>
    </form> <?php // attraverso un if controlliamo che il form sia stato inviato if ( $_GET['inviodati'] == "ok" ) { // recuperiamo i dati inviati con il form $nome = $_POST['nome']; $nickname = $_POST['nickname']; $mail = $_POST['mail']; $pass1 = $_POST['pass']; $pass2 = $_POST['pass2']; // ora controlliamo che i campi siano stati tutti compilati if ( $nome == TRUE && $mail == TRUE && $nickname == TRUE && $pass1 == TRUE && $pass2 == TRUE ) { // controlliamo se il campo mail è stato scritto in maniera errata $email = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$mail); if ( $email == TRUE ) { // controlliamo se l'mail è presente già nel database $sql = mysql_query("SELECT * FROM tabella_registrati WHERE mail = '$mail'") or die ("Mail già occupata"); $num_rows = mysql_num_rows($sql); if ( $num_rows == 0 ) { // ora controlliamo che le password inserite siano identiche if ( $pass1 == $pass2 ) { // infine criptiamo la password con md5 $pass_md5 = md5($pass1); $nickname = mysql_real_escape_string($nickname); $nome = mysql_real_escape_string($nome); mysql_query("INSERT INTO tabella_registrati (id , nick , nome , pass , mail ) VALUES ('','$nickname', '$nome', '$pass_md5', '$mail' )") OR DIE(mysql_error()); // e inviamo una mail con la riuscita registazione mail ($mail, "Registrazione OK", "Complimenti registrazione effettuata con successo", "From: tuamail@host.formato"); // messaggio da far visualizzare all'utente finale echo "Complimenti registrazione effettuata con successo."; } else { echo "Le password non corrispondono"; } } else { echo "Indirizzo mail già utilizzato."; } } else { echo "La tua mail non è idonea, per la registrazione."; } } else { echo "Tutti i campi sono obbligatori."; } } ?>

    main_login.php
    <HTML> <HEAD> <TITLE>prova</TITLE> </HEAD> <BODY> <table border="0" cellspacing="1" cellpadding="0" width="300" align="center" bgcolor="#cccccc"><tbody> <tr><form action="checklogin.php" method="post"> <input name="phpMyAdmin" type="hidden" value="V0N0db6Fl62QWr6eBkly75xAGn3" /><td> <table border="0" cellspacing="1" cellpadding="3" width="100%" bgcolor="#ffffff"><tbody> <tr> <td colspan="3">Member Login </td> </tr> <tr> <td width="78">Username</td> <td width="6">:</td> <td width="294"><input id="nickname" name="nickname" type="text" /></td> </tr> <tr> <td>Password</td> <td>:</td> <td><input id="pass" name="pass" type="pass" /></td> </tr> <tr> <td></td> <td></td> <td><input name="Submit" type="submit" value="Login" /></td> </tr> </tbody></table> </td> </form></tr> </tbody></table> </BODY> </HTML>

    check_login.php
    [CODE]<?php $host="localhost"; // Hostname $username="ralph007"; // Mysql username $password=""; // Mysql password $db_name="my_ralph007"; //Nome del Database $tbl_name="tabella_registrati"; // Nome della Tabella // Procedimento per connettersi al Database mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // Nome utente e password inviate attraverso il form $myusername=$_POST['nickname']; $mypassword=$_POST['pass']; $sql="SELECT * FROM $tbl_name WHERE nickname='$myusername' and pass='$mypassword'"; $result=mysql_query($sql); // Mysql_num_row is counting table row $count=mysql_num_rows($result); // If result matched $myusername and $mypassword, table row must be 1 row if($count==1){ // Register $myusername, $mypassword and redirect to file "login_success.php" session_register("nickname"); session_register("pass"); header("location:login_success.php"); } else { echo "Attenzione username o password errati"; } ?>

    login_success.php
    <?php // Controlla se la sessione è stata registrata, altrimenti rimanda alla pagina di login // Questa prima parte dobbiamo inserirla in tutte le pagine che vogliamo proteggere con password prima di qualsiasi altra cosa session_start(); if(!session_is_registered(nickname)){ header("location:main_login.php"); } ?>

    Le tabella viene creata all''interno del database. Riesco anche a registrarmi. Ma quando faccio il login sempre errato! Dove sbaglio?

  4. #4
    Magari ci fosse un thread sticky con un regolamento che spiega anche come postare correttamente il codice... MA ASPETTA, in effetti c'e'! E' ben nascosto li' in cima alla lista con un grosso LEGGERE PRIMA DI POSTARE ma io l'ho trovato lo stesso!

  5. #5
    Scusate! Comunque mi aiutate o no?

  6. #6
    prova a cambiare il codice in questo modo dopo avere fatto la query

    Codice PHP:
    if(!empty($result))
     { 

         
    $_SESSION['username']=$myusername
         
    $_SESSION['loggato']=1;
         
    header("location:login_success.php"); 
     } 
         else 
         { 
             echo 
    "Attenzione username o password errati"
         } 
    e poi nella pagina login_success.php togli i controlli che avevi messo e inserisci:

    Codice PHP:
    if($_SESSION['logged']==1)
    {
        
    //qui andrà la tua pagina

    }

    else 

    {
    //fai il redirect alla pagina di login dicendo che non si può accedere all'area riservata blabla} 

  7. #7
    Grazie Mille! Un altra domanda. Appena faccio il login. Come posso fare in modo che esca scritto sulla pagina il mio nick con la quale ho fatto il login?

  8. #8
    Codice PHP:

    echo "Benvenuto ".$_SESSION['username']." !"

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.