$_Session

"Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0"

Quando carico la pagina per la prima volta mi viene visualizzato questo errore.  :angel:

inviato 10 anni fa
EKELON77
X 0 X

riporta la pagina

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
If ($idac == '') {
mysql_close ($connes);
$msg = "ACCESSO NEGATO";
$msg = urlencode($msg); // non ci possono essere spazi nell'URL
refresh("accesso.php?msg=$msg",0);
exit;
} else {
session_register("nomin");
$nominat = $nomin;
$cod = "6a4c2e0g1";
session_register("cod");
$cd = $cod;
mysql_close ($connes);
refresh("menu.php?vd=ok",1);
}

Riporto il codice incriminato. :bye:

risposto 10 anni fa
EKELON77
X 0 X

Stai usando la vecchia gestione delle sesssioni. Butta via session_register e procedi in questo modo:

All'inizio di ogni pagina che deve usare le sessioni metti:

session_start();

per memorizzare un dato in sessione:

$_SESSION['nome_dato'] = 'valore dato'; // se si tratta di una stringa

per cancellare un dato dalla sessione:

unset($_SESSION['nome_dato']);

per studiare nei dettagli le sessioni:

http://www.phpnews.it/articoli/php/le-sessioni/

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
$_SESSION['nomin'] = '$nomin'; // se si tratta di una stringa
$nominat = $nomin;
$cod = "6a4c2e0g1";
$_SESSION['cod'] = '$cod'; // se si tratta di una stringa
$cd = $cod;
mysql_close ($connes);
unset($_SESSION['cod']);
unset($_SESSION['nomin']);
refresh("menu.php?vd=ok",1);
}

Ho proceduto in questo modo purtroppo ho scoperto che non è corretto perchè non mi fa accedere al back-office

risposto 10 anni fa
EKELON77
X 0 X

ci sono diversi errori :

manca session_start(); ( almeno nel post manca ! )

$cd = '$cod';

$nominat = '$nomin';

php non effettua l'interpolazione delle variabili che si trovano in apici  ( virgolette singole ) e viene interpretato tutto con il suo valore letterale ( $ come $ e non come variabile )

in questo modo assegni il nome $nomin e $cod alle variabili e non il contenuto della variabile stessa :D

$_SESSION['nomin'] = $nomin; // se si tratta di una stringa
$nominat = $nomin;
$cod = "6a4c2e0g1";
$_SESSION['cod'] = $cod; // se si tratta di una stringa
$cd = $cod;
mysql_close ($connes);
unset($_SESSION['cod']);
unset($_SESSION['nomin']);
refresh("menu.php?vd=ok",1);
}

ps: quand'è possibile posta il codice php nei tag [ PHP ] [ /PHP ]

:bye:

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X
<?

session_start();

function refresh($url,$t)

{

 echo "<META HTTP-EQUIV=REFRESH CONTENT=\"$t;  URL=$url\">";

}

include "connessione.php";

$selacc =  "select * from utenti where nominativo = '$_POST[nomin]' and logon = '$_POST[usern]' and password = '$_POST[passw]'";

$queryselacc = mysql_query ($selacc,$connes)

                       or die ("Non riesco ad eseguire la richiesta, torna indietro<br/>".mysql_error());

$valselacc = mysql_fetch_array ($queryselacc);

$idac = $valselacc ["idute"];

If ($idac == '') {

mysql_close ($connes);

$msg = "ACCESSO NEGATO";

$msg = urlencode($msg); // non ci possono essere spazi nell'URL

refresh("accesso.php?msg=$msg",0);

exit;

} else {

$_SESSION['nomin'] = $nomin; // se si tratta di una stringa

$nominat = $nomin;

$cod = "6a4c2e0g1";

$_SESSION['cod'] = $cod; // se si tratta di una stringa

$cd = $cod;

mysql_close ($connes);

unset($_SESSION['cod']);

unset($_SESSION['nomin']);

refresh("menu.php?vd=ok",1);

}

?>

Questa è l'intera funzione PHP, ho notato che anche altre variabili quelle devono visulizzare il msg di errore non vengono utilizzate correttamente tipo $msg, puoi dirmi come mai?

risposto 10 anni fa
EKELON77
X 0 X

ehm ma è un login??

la password è in chiaro nel database?

non è cripatata con MD5 o SHA1 ???

attento se è criptata devi criptarla per fare il confronto ... cmq cosa c'è che non va sry?? ???

:bye:

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Si è un login, la pwd non è criptata cmq non fà il login e visualizza il messaggio di errore. :angel:

risposto 10 anni fa
EKELON77
X 0 X

che errore ricevi?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Nessun errore, processa la pagina di login ma torna indietro con sulla REQUEST il messaggio "ACCESSO NEGATO" ovvero "http://localhost:8080/sitovideoteca/areariservata/accesso.php?msg=ACCESSO%20NEGATO"

risposto 10 anni fa
EKELON77
X 0 X
Nessun errore, processa la pagina di login ma torna indietro con sulla REQUEST il messaggio "ACCESSO NEGATO" ovvero "http://localhost:8080/sitovideoteca/areariservata/accesso.php?msg=ACCESSO%20NEGATO"

Ho fatto qualche prova e il problema di autenticazione mi viene segnalato solo quando il register_globals è impostato su OFF. Cosa può essere? E' normale che si comporti così?

risposto 10 anni fa
EKELON77
X 0 X

se lo script funziona con il register_global attivato significa che da qualche parte dello script stai usando direttamente una variabile che viene da GET, POST, COOKIE senza usare gli array $_GET, $_POST, $_COOKIE

Analizza nel dettaglio tutti gli script coinvolti nell'autenticazione e verifica la provenienza di ciascuna variabile.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ho apportato delle modifiche al codice aggiugendo $_SESSION ma non riesco a mantenere la sessione attiva, mi spiego meglio c'è il file di login dove dichiaro le variabili da mettere in sessione, lo stesso faccio per il file di sessione dove imposto le variabili che dovrebberò essere essere richiamate nel menu.

File di Login.php

<?
session_start(); ?>
<?
function refresh($url,$t)
{
 echo "<META HTTP-EQUIV=REFRESH CONTENT=\"$t;  URL=$url\">";
}
include "connessione.php";

$selacc =  "select * from utenti where nominativo = '$_POST[nomin]' and logon = '$_POST[usern]' and password = '$_POST[passw]'";

$queryselacc = mysql_query ($selacc,$connes)
                       or die ("Non riesco ad eseguire la richiesta, torna indietro<br/>".mysql_error());

$valselacc = mysql_fetch_array ($queryselacc);
$idac = $valselacc ["idute"];

If ($idac == "") {
mysql_close ($connes);
$PHPSESSID=session_id();
$_SESSION['msg'] = $msg;
$msg = "ACCESSO NEGATO";
$msg = urlencode($msg); // non ci possono essere spazi nell'URL
refresh("accesso.php?msg=$msg&PHPSESSID=$PHPSESSID",0);
exit;
} else {
$_SESSION['nomin'] = $nomin; // se si tratta di una stringa
$nominat = $nomin;
$cod = "6a4c2e0g1";
$_SESSION['cod'] = $cod; // se si tratta di una stringa
$cd = $cod;
mysql_close ($connes);
refresh("menu.php?vd=ok",1);
}
?>

File di Sessione.php

<?
session_start(); ?>
<?
//$nomin="Amministratore";
//$nominat = $nomin;
$_SESSION['nominat'] = $nominat; // se si tratta di una stringa
//$cod="6a4c2e0g1";
//$cd = $cod;
$_SESSION['cd'] = $cd; // se si tratta di una stringa
//session_register("idsez2");
?>

File di Menu.php

<?
if (($nominat != '') and ($cd=="6a4c2e0g1")){

include "connessione.php";

$selsez =  "select * from menu order by nome";

$querysez = mysql_query ($selsez,$connes)
                       or die ("Non riesco ad eseguire la richiesta, torna indietro");

if ($vd == "ok") { $msg = "Benvenuto"; }
$msg = $msg." Sig. ".$nomin;
?>

Spero che mi potiate essere utili ad uscire da questo DeadLock, e capire dove sbaglio.  :giveup: :lamo: :wallbash:

risposto 10 anni fa
EKELON77
X 0 X

Ma il file Menu.php non usa le sessioni ?!?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
<? session_start(); ?>

<?

include "sessione.php";

function refresh($url,$t)

{

 echo "<META HTTP-EQUIV=REFRESH CONTENT=\"$t;  URL=$url\">";

}

?>

<html>

<head>

<title>BACK-OFFICE</title>

</head>

Ti allego la parte in cui utilizza le sessioni, cmq ho risolto.

Grazie ancora della tua disponibilità!!!

L'errore era che nel file sessione.php che all'inizio scrivevo come per il file di login, poi ho capito che non stavo recuperando i dati dalla sesssione, dopo leggevo le variabili con nomi diversi da come erano scritte, risolto questo sono riuscito ad accedere al back-office. :bye:

P.S.: Per altre anomalie creero nuovi post.

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