Sessioni - Database

  • Creatore Discussione Creatore Discussione Z0MB13
  • Data di inizio Data di inizio

Z0MB13

Utente Attivo
30 Mar 2013
34
0
0
Salve, ho creato un sito e, grazie all'aiuto di un mio amico, sono riuscito a fare il login. Però quando inserisco i dati il database mi riconosce, ma non rimango memorizzato nella cache del server. Cioè, quando accedo mi esce sempre la pagina del login nonostante sono entrato.
In pratica dovrei inserire le sessioni ma non so farlo. Mi dareste una mano? Grazie!
 
Ciao, per aprire la sessione devi usare: session_star();.
Ecco un piccolo esempio, ho inserito solo il nickname puoi ovviamente
inserire anche la password.
Inserisco anche un form direttamente nell'else del codice PHP
ma puoi richiamare il codice PHP anche esternamente dal comando
action di HTML.
Dopo il login "e dopo aver registrato la sessione" mandi con header('');
alla pagina di Benvenuto dove stampi con un echo lo user dell'utente.

Pagina Login.php
PHP:
<?php 
@session_start();
if(isset($_POST['nickname'])&&($_POST['nickname']!="")){
  $_SESSION['username'] = $_POST['nickname'];
  @header('Location:Pagina_Benvenuto.php');
 }else{
 ?>
//// Inizio Form HTML /////
<html>
<head>
<title>Login Utente</title>
</head>
<body>
<p>
<form method="post" action="login.php">
Scegli il tuo nickname<br><br>
<input type="text" name="nickname" maxlength="10">
<input type="submit" value="Invia">
</form>
</p>
</body>
</html>
///// Fine Form HTML ////
<?
}
?>
 
Ultima modifica:
Salve,
sono io "l'amico" XD.
vi spiego a grandi linee qual'è la situazione:
Abbiamo creato un database chiamato test con dentro una tabella che contiene i campi ID, USERNAME e PASSWORD.
- ID (come penso che sia in tutti i database) è il valore incrementale che conteggia i record
- Username e password penso siano abbastanza chiari

Abbiamo creato la login e funziona, che funziona si capisce dal fatto che lo script PHP non reindirizza alla pagina di errore, questo perchè:
il Checklogin (un file php) fa il controllo e dice, se la login è corretta, l'header rimanda alla index.php mentre se è sbagliata, stampa a video "Attenzione username o password errati".

Quando si esegue la login infatti si viene rimandati alla index.php, per questo si capisce che funziona, ma non viene stampato il nome utente al posto della login, che appunto non sappiamo come stamparlo prendendolo dal database.

La pagina comunque si trova qui:
- JohnnyFerrari.it/prove/pubbliche/5/

Adesso non funziona perchè non è collegato il database (lo testavamo offline con XAMPP).
Vorrei specificare che se il lavoro non è esageratamente laborioso, interessa anche a me.
Ciao a tutti.

PS. se riusciamo a mantenere le sessioni di login aperte ed a gestirle poi ci interessa sapere anche come creare la pagina di registrazione, quella personalizzata dell'utente, e le pagine del sito accessibili solo tramite login, comunque.....un passo alla volta.
 
Ciao, non avevndo a disposizione il codice della Checklogin provo ad immaginarmelo e ti faccio un semplice esempio
PHP:
<?php

session_start();
// recupero dati login
$nomeutente = $_POST['username'];
$password = md5($_POST['password']);

// connessione al database
$query = "SELECT idutente,nomeutente 
                 FROM utenti 
                 WHERE nomeutente = '$nomeutente' && password = '$password' && attivo = 1";
// esecuzione della query

if ($num_rows == 1) {
    $_SESSION['nomeutente'] = $nomeutente;
    $_SESSION['idutente'] = $rows['idutente'];
    header("location:index.php");
} else {
    header("location:loginerrato.php");
}
?>
per verificare la sessione nella index
PHP:
<?php
session_start(); 
if (isset($_SESSION['idutente'])) {
    echo "Benvenuto " . $_SESSION['nomeutente'];
} else {
    header("location:loginerrato.php");
}
?>
edit
avevo dimenticato session_start(); in index.php
 
Ultima modifica:
Ovviamente quando si iscrive un nuovo utente e salvi quindi le password nel db devi salvarle criptate con md5() così come viene criptati la variabile $password nel codice postato da criric.
 

Discussioni simili