aiuto creazione pagina login

onebill964

Utente Attivo
21 Giu 2009
46
0
0
venezia
ciao a tutti sono nuovo di questo forum e di php...,prima di tutto complimenti molto interessante.sto provando ad inserire nel mio sito una sezione per registrazione utenti seguendo il tutorial "Un sistema di registrazione utenti con conferma e psw reminder" su questo sito in Articoli php.Funziona molto bene ma manca come descritto la pagina per il normale login all'area protetta che controllerà che i dati di autenticazione siano corretti e che all'utente che tenta di loggarsi corrisponda un account attivo. Ho provato a crearla ma senza successo.Ringrazio chiunque potrà aiutarmi
 
prova a postare quello che hai realizzato tu così avremo una base sulla quale apportare le correzioni.


Ciro
 
pagina login

Ciao intanto grazie avevo buttato il file xkè non funzionava
in questo modo se si sbaglia di loggarsi mi restituisce l'errore ma se inserisco i dati esatti non mi reindirizza alla pagina riservata.penso che sia tutto sbagliato cmq grazie

<?php
session_start();
if( isset($_POST['submit']) && (trim($_POST['submit']) == "Login") )
{
if((!isset($_POST['email'])) || (!eregi("^([a-z0-9\._-]+)(@[a-z0-9.-]+)(\.{1}[a-z]{2,4})$", $_POST['email'])))
{
echo "Attenzione, formato email non valido.";
}
elseif((!isset($_POST['password'])) || ($_POST['password'] == "") || (!preg_match("/^[a-z0-9]+$/i", $_POST['password'])))
{
echo "Attenzione, password non corretta.";
}else{
$email = $_POST['email'];
$password = $_POST['password'];
@include "config.php";
//controllo sui dati nel db
$ctrl_login = @mysql_query("SELECT id FROM utenti WHERE email='$email' AND password='$password'") or die (mysql_error());
//se utente risulta attivo(1)apro sessione
if(@mysql_num_rows($ctrl_login)==1)
{
$_SESSION['id'] = $obj->id;
@header("Location: area_riservata.php");
}else{
echo "Login incorretto.";
echo "<a href=\"javascript:history.back()\">ritenta</a> o <a href=\"form_iscrizione.php\">iscriviti</a> dalla sezione apposita";

}
}
}
?>
<h1>Form login:</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Email:<br>
<input name="email" type="text" size="20"><br>
Password:<br>
<input name="password" type="password" size="20"><br>
<input name="submit" type="submit" value="Login">
</form>
?>
 
ciao, l'istruzione

@header("Location: area_riservata.php");

deve essere la prima, prima di qualsiasi output html
se togli la @ dovresti vedere l'errore
che ti da php
io per evitare e mettere il reindirizzamento dove mi pare utilizzo

echo "<meta http-equiv='Refresh' content='0; URL=area_riservata.php'>";
 
pagina login

Ciao,grazie per la risposta appena possibile provo ad utilizzare il reindirizzamento che mi hai suggerito e ti so dire
 
pagina login

ciao,ho provato a fare come suggerito e funziona,ora però testando lo script ho notato che se inserisco una psw errata sparisce il form!!
provo a postare il codice del file conferma.php(dal quale ho provato a creare il login) che l'utente appena iscritto raggiunge tramite un link nella mail che gli viene inviata ,dove una volta reinseriti i dati viene controllato che siano presenti in tabella e quindi con un uplode nella tabella viene attivato portando il settaggio da 0 a 1.quello che volevo fare era semplicemente il form di login per l'utente già iscritto ,
che dovrebbe solamente verificare che i dati siano inseriti nel database e soprattutto che il settaggio sia a 1 cioè attivo quindi in caso positivo reindirizzarlo all'area riservata oppure rimandarlo al form login e invitarlo ad iscriversi.Purtroppo ci capisco sempre meno!
conferma.php
PHP:
session_start();

// controllo sul parametro d'invio
if( isset($_POST['submit']) && (trim($_POST['submit']) == "Conferma") )
{ 
  // controllo sul formato dell'email
  if((!isset($_POST['email'])) || (!eregi("^([a-z0-9\._-]+)(@[a-z0-9.-]+)(\.{1}[a-z]{2,4})$", $_POST['email'])))
  {
    echo "Attenzione, formato email non valido.";
  }
  // controllo sul formato della password
  elseif((!isset($_POST['password'])) || ($_POST['password'] == "") || (!preg_match("/^[a-z0-9]+$/i", $_POST['password'])))
  {
    echo "Attenzione, password non corretta.";
  }else{
    // se i parametri sono in formato corretto interroghiamo il database
    $email = $_POST['email'];
    $password = $_POST['password'];

    // includiamo il file di configurazione
    @include "config.php";

    // controlliamo se i parametri sono presenti in tabella
    $ctrl_login = @mysql_query("SELECT id FROM iscrizioni WHERE email='$email' AND password='$password'") or die (mysql_error());
    if(@mysql_num_rows($ctrl_login)==0)
    {
      // esito login negativo
      echo "Login incorretto.";
    }else{
      // esito login positivo quindi rendiamo l'utente attivo
      $obj = @mysql_fetch_object($ctrl_login) or die (mysql_error());
      $query_attivo = @mysql_query("UPDATE iscrizioni SET attivo='1' WHERE id=".$obj->id) or die (mysql_error());

      // creiamo un id di sessione corrispondente all'utente
      $_SESSION['id'] = $obj->id;

      // redirect alla pagina degli iscritti
      @header("Location: iscritti.php");
    }
  } 
}else{
  // form per la conferma
  ?>
<h1>Modulo di conferma:</h1>
<form action="
echo $_SERVER['PHP_SELF']; [/php]" method="post">
Email:<br>
<input name="email" type="text" size="20"><br>
Password:<br>
<input name="password" type="password" size="20"><br>
<input name="submit" type="submit" value="Conferma">
</form>
<?
}
?>[/PHP]
 
Ultima modifica:
ciao
io usualmente tengo il form fuori dallif, cuie non faccio la parte else
PHP:
<?php
//.....
if( isset($_POST['submit']) && (trim($_POST['submit']) == "Conferma")){
//tutto quello che serve
//l'if e i controlli pass esempio
if($pass!= $pass_da_database){
echo "<meta http-equiv='Refresh' content='3; URL=pagina_di_log.php'>";
// nota content =3 secondi prima del reindirizzameno io in questo caso metto 0
// al posto ddel nome pag si può mettere
// URL=".$_SERVER['PHP_SELF']."'>"; per essere sicuri di tornare alla stessa pagina


}

}//fine dell'if e non metto l'else e fine del php
?>

<h1>Modulo di conferma:</h1>
<form action=" <?php echo.......?> >

<!-- tutto il form -->
</form>
 
Ultima modifica:
pagina login

ciao grazie infinite sono riuscito a sistemare e sembra funzionare come
volevo. un ultima cosa se ti è possibile un suggerimento per creare il logout
dall'area riservata che chiuda la sessione
grazie ancora
 
Questa soluzione va bene per il logout da qualsiasi sessione di login:
PHP:
<?php
session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
    setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();
?>
 

Discussioni simili