Visualizzazione dei risultati da 1 a 4 su 4

Discussione: ancora sul login

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536

    ancora sul login

    Ciao ragazzi
    devo ancora risolvere un problema in merito alla protezione
    di pagine web di differenti utenti:
    Ho trovato questi script:
    il codice del form per il login:

    codice:
    <html><head>
    <title>Shatners PHP Login</title>
    </head>
    <body>
    <form action="checkuser.php" method="post" name="form1">
      <table width="50%" border="0" align="center" cellpadding="4" cellspacing="0">
        <tr>
          <td width="22%">Username</td>
          <td width="78%"><input name="username" type="text" id="username"></td>
        </tr>
        <tr>
          <td>Password</td>
          <td><input name="password" type="password" id="password"></td>
        </tr>
        <tr>
          <td></td>
          <td><input type="submit" name="Submit" value="Submit"></td>
        </tr>
      </table></form></body>
    </html>
    checkuser.php (x il controllo dati):
    codice:
    <?
    /* Check User Script */
    session_start();  // Start Session
    include 'db.php';
    // Convert to simple variables
    $username = $_POST['username'];
    $password = $_POST['password'];
    
    if((!$username) || (!$password)){
    	echo "Please enter ALL of the information! 
    ";
    	include 'index.htm';
    	exit();
    }
    // Convert password to md5 hash
    $password = md5($password);
    
    // check if the user info validates the db
    $sql = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password' AND activated='1'");
    $login_check = mysql_num_rows($sql);
    
    if($login_check > 0){
    	while($row = mysql_fetch_array($sql)){
    	foreach( $row AS $key => $val ){
    		$$key = stripslashes( $val );
    	}
    		// Register some session variables!
    		session_register('first_name');
    		$_SESSION['first_name'] = $first_name;
    		session_register('last_name');
    		$_SESSION['last_name'] = $last_name;
    		session_register('email_address');
    		$_SESSION['email_address'] = $email_address;
    		
    		header("Location: $username.php");
    	}
    } else {
    	echo "You could not be logged in! Either the username and password do not match or you have not validated your membership!
    
    	Please try again!
    ";
    	include 'index.htm';
    }
    ?>
    e una pagina qualsiasi (in questo caso luca.php, ma ci deve essere una per ogni utente) protetta così:

    codice:
    <?
    session_start();
    if ( empty( $first_name ) ) {
    ?> Welcome Guest, You Can Login Here
    </a> 
    <?
    } else { include 'db.php'; echo "Come stai?,
    ". $_SESSION['first_name'] .""; 
    ?>
     Logout 
    <? } ?>
    Ci sono ovviamente altre pagine, ma queste 3 sono le più importanti.

    Nella seconda pagina, come potete vedere, si effettua il controllo
    del user e della pass poi io ho aggiunto

    header("Location: $username.php");

    che reindirizza, come voglio, alla pagina protetta del singolo utente.
    Il problema è che una volta che l'utente si è autenticato
    e aperta la sessione accede si alla propria pagina web, ma può
    entrare anche nelle pagine altrui (digitando nell'indirizzo del browser
    invece che luca.php ad esempio ciccio.php)

    Ho aggiunto nel file checkuser.php questo

    ...
    session_register('password');
    $_SESSION['password'] = $decrypted_password;

    e ho fatto questa modifica al file dell'utente:

    <?
    session_start();
    include 'db.php';
    if($_SESSION['password']=="98jaatc9")//faccio il confronto con la password del cliente autorizzato
    { echo "Welcome,
    ". $_SESSION['first_name'] ."";
    ?>
    Logout
    <? }

    else
    echo "Ingresso non autorizzato";
    ?>

    Sembra funzionare ma ci sono 2 problemi:
    1) Ho notato che devo fare il login 2 volte in quanto la prima volta anche
    se la pass è giusta mi riporta "Ingresso non autorizzato"

    2) E' efficace, ma non so (considerando la mia conoscenza del php)
    quanto sicuro. Le sessione non le conosco affatto.

    Potete dirmi qualcosa su questi 2 punti?
    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536
    up

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    536
    niente di niente?
    ciao

  4. #4
    visto che l'utente può accedere solo ad una pagina col suo nome...
    codice:
    if(basename($_SERVER['PHP_SELF'] != $_SESSION['first_name'].".php") {
           echo "Non hai accesso a questa pagina";
    }
    E' la mia opinione ed io la condivido
    Non condivido la tua idea ma darei la vita perché tu la possa esprimere (Voltaire)
    Scrivi sul muro

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.