Modifica script per area protetta ...come???

Sto cercando di modificare lo script di questo tutorial (per l'implementazione di un'area protetta) .....

http://www.phpeasystep.com/phptu/6.html

L'ho adattato alle mie esigenze ma vorrei capire come fare a registrare in una variabile di sessione il nome utente ed  il livello dell'utente (che ho memorizati nel DB) in modo da poterli visualizzare nelle pagine dell'area protetta dopo l'autenticazione ...... qualcuno mi può aiutare???

Ho visto che nello script esiste la registrazione di due variabili di sessione .... ma sono valori recuperati dal form di autenticazione ...... e non quelli inseriti estratti dal db

La parte di codice da modificare dovrebbe essere questo:

<?php
ob_start();
$host="localhost"; // Host name 
$username=""; // Mysql username 
$password=""; // Mysql password 
$db_name="test"; // Database name 
$tbl_name="members"; // Table name 

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$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("myusername");
session_register("mypassword"); 
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}

ob_end_flush();
?>

Chi mi da una mano??

Grazie in anticipo!

inviato 9 anni fa
ninext
X 0 X

Lo script salva nella sessione username e password inseriti dal form che equivalgono a quelli inseriti nel db, altrimenti non salva niente.

Per registrare anche i permessi nella sessione devi aggiungere, dove già registra utente e pwd, una cosa così:

$record = mysql_fetch_array($result);
session_register($record["permessi"]);

P.S.

Ma che versione di php stai usando?

risposto 9 anni fa
LonelyWolf
X 0 X

ho PHP 5.2 ... ma credo che lo script sia un po vecchiotto!

Grazie per la risposta ...... adesso provo! .... ma per visualizzare il nome utente in una pagina???

risposto 9 anni fa
ninext
X 0 X

Comunque:

1 - cambia tutti i session_register() con  $_SESSION[], a.e.:

$_SESSION["myusername"] = $myusername;

2 - assicurati che all'inizio di ogni pagina ci sia session_start();

Risposta:

echo $_SESSION["myusername"];
risposto 9 anni fa
LonelyWolf
X 0 X

Nello script non vedo il session_start()

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Il session_start() è in questa parte del codice ...

If you want to logout, create this file

// Put this code in first line of web page. 
<? 
session_start();
session_destroy();
?>

E' corretto che sia qui? ......

risposto 9 anni fa
ninext
X 0 X

session_start() deve essere in tutte le pagine che utilizzano le sessioni, come ti ho scritto nel post precedente.

session_destroy() solo per il logout.

risposto 9 anni fa
LonelyWolf
X 0 X
risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Adesso ho pochissimo tempo per studiarmi l'argomento ....... (al più presto ci do un'occhiata) .....

Quindi per utilizzare le variabili di sessione nelle pagine protette devo inserire questo codice:

// Check if session is not registered , redirect back to main page. 
// Put this code in first line of web page. 
<? 
session_start();
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
?>

..... e per visualizzare (stampare a video) la variabile di sessione???

Ho provato con $_SESSION=["nomevariabile"];

ma non funziona ... non stampa nulla!

risposto 9 anni fa
ninext
X 0 X

Mi sa che sei anche a corto di nozioni PHP!

$_SESSION=["nomevariabile"]; è una sintassi inesistente

$_SESSION["myusername"] = $myusername; questo per salvare il valore di una variabile nella sessione

echo $_SESSION["myusername"]; per stamparlo, come ti ho scritto 2 post fa.

risposto 9 anni fa
LonelyWolf
X 0 X

Mi sa che sei anche a corto di nozioni PHP!

$_SESSION=["nomevariabile"]; è una sintassi inesistente

$_SESSION["myusername"] = $myusername; questo per salvare il valore di una variabile nella sessione

echo $_SESSION["myusername"]; per stamparlo, come ti ho scritto 2 post fa.

Sono stato frettoloso nel riportare il codice .... in realtà avevo ho usato

echo $_SESSION["myusername"];
risposto 9 anni fa
ninext
X 0 X

Ho provato a registrare in una variabile di sessione il campo "level_user"  modificando lo script in questo modo

// Register $myusername, $mypassword and redirect to file "login_success.php"

$record = mysql_fetch_array($result);
session_register($record["level_user"]);
session_register("myusername");
session_register("mypassword"); 
header("location:Backoffice_Main.php");

e a stamparlo usando

<?php echo $_SESSION["level_user"] ?>

ma non va ... non mi stampa nulla .... cosa sbaglio??

risposto 9 anni fa
ninext
X 0 X

Ho provato a registrare in una variabile di sessione il campo "level_user"  modificando lo script in questo modo

// Register $myusername, $mypassword and redirect to file "login_success.php"

$record = mysql_fetch_array($result);
session_register($record["level_user"]);
session_register("myusername");
session_register("mypassword"); 
header("location:Backoffice_Main.php");

prova così:

$record = mysql_fetch_array($result);
$_SESSION['level_user'] = $record['level_user'];


$_SESSION['myusername'] = $username;
$_SESSION['mypassword'] = $password; 
//dove in $username e password ci saranno i valori che ti servono

header("location:Backoffice_Main.php");

x stampare a video:

<?php echo $_SESSION['level_user'] ?>

ciao

Lore

risposto 9 anni fa
Lore
Lore
1
X 0 X

Adesso non mi fa più loggare .... non entro più nella pagina protetta!

Il codice adesso è il seguente:

<?php
ob_start();
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password="root"; // Mysql password 
$db_name="db_web_biccari"; // Database name 
$tbl_name="backoffice_user"; // Table name 

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 
$sql="SELECT username_user, password_user, level_user FROM $tbl_name WHERE username_user='$myusername' and password_user='$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"

$record = mysql_fetch_array($result);
$_SESSION['level_user'] = $record['level_user'];
$_SESSION['myusername'] = $myusername;
$_SESSION['mypassword'] = $mypassword; 
header("location:Backoffice_Main.php");
}
else {
echo "Wrong Username or Password";
}
ob_end_flush();
?>
risposto 9 anni fa
ninext
X 0 X

Ma session_start() dove l'hai messo?

DEVE ESSERE ALL'INIZIO DI OGNI PAGINA IN CUI TI SERVONO LE SESSIONI.

Scusa se grido ma l'abbiamo già scritto più volte, senza quello NON puoi usare le sessioni e di conseguenza lo script non funziona.

E poi perchè usare le funzioni ob_xxx ?

risposto 9 anni fa
LonelyWolf
X 0 X

Nella pagina Backoffice_main.php o messo all'inizio

<?
// Check if session is not registered , redirect back to main page. 
session_start();
if(!session_is_registered(myusername)){
header("location:Backoffice_login.php");
}
?>

Pare che sia tutto ok ......

risposto 9 anni fa
ninext
X 0 X

Nella pagina Backoffice_main.php o messo all'inizio

<?
// Check if session is not registered , redirect back to main page. 
session_start();
if(!session_is_registered(myusername)){
header("location:Backoffice_login.php");
}
?>

Pare che sia tutto ok ......

Quello che ti vuole dire LonleyWolf, credo, è che in tutte le pagine dove utilizzi una sessione ci dev'essere session_start:

<?php

session_start();

ob_start();

$host="localhost"; // Host name

$username="root"; // Mysql username

$password="root"; // Mysql password

$db_name="db_web_biccari"; // Database name

$tbl_name="backoffice_user"; // Table name

in questa pagina non c'è...

ciao

Lore

risposto 9 anni fa
Lore
Lore
1
X 0 X

.... ok adesso funge!! ... era proprio quello mancava proprio il session_start() nella pagina dove verifica le credenziali nel db!

Grazie mille .... anche per la pazienza!

risposto 9 anni fa
ninext
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda