[RISOLTO]ancora ..passaggio variabili

  • Creatore Discussione Creatore Discussione noblues
  • Data di inizio Data di inizio

noblues

Nuovo Utente
20 Nov 2013
12
0
0
salve a tutti..so che sono state scritte migliaia di pagine sull'argomento..ma non ne vengo fuori
ho un form con mail e psw che funziona correttamente ma ho la necessità di riportare la var email su altre due pagine..
questo è il processo di controllo inviato dal form di login.php che funziona correttamente..
PHP:
<?php 
sec_session_start(); 
if(isset($_POST['email'], $_POST['p'])) { 
   $email = $_POST['email'];   
   $password = $_POST['p']; // Recupero la password criptata.
   if(login($email, $password, $mysqli) == true) {
//
        $_SESSION['mymail']= $_REQUEST['email'];//ho aggiunto...
//
      // Login eseguito
       header('Location: ../login.php?ok=1');
   } else {
      // Login fallito
      header('Location: ../login.php?error=1');
   }
} else { ...

?>
nella pag login.php do provato a mettere
PHP:
<?php 
session_start();
//ho provato a mettere sec_session_start() ma Fatal error: Call to undefined function...
?> 
...codice vario
<?php

if(isset($_GET['error'])) { 
echo "<font color='red'>Errore... dati errati!</font>";
}
if(isset($_GET['ok'])) { 
	//utente esiste
     echo "mi ricordo che la sessione è ".$_REQUEST['email']."<br />";
    echo "mi ricordo che la sessione è ".$_SESSION['mymail']."<br />"; 
    echo "<font color='blue'>va bene</font>";
}
?>
ma mi riporta solo le tre stringhe echo e le variabili vuote..
dove sbaglio ?
tks
 
ma cos'è quel sec_session_start() ??? non fa parte delle api ufficiali di php

prova così

PHP:
session_start(); 

if(isset($_POST['email'], $_POST['p'])) { 
   $email = $_POST['email'];   
   $password = $_POST['p']; // Recupero la password criptata.
   if(login($email, $password, $mysqli) == true) {
//
        $_SESSION['mymail']= $email;//ho aggiunto...
//
      // Login eseguito
       header('Location: ../login.php?ok=1');
   } else {
      // Login fallito
      header('Location: ../login.php?error=1');
   }
} else { ...



PHP:
<?php 
session_start();
//ho provato a mettere sec_session_start() ma Fatal error: Call to undefined function...
?> 
...codice vario
<?php

if(isset($_GET['error'])) { 
echo "<font color='red'>Errore... dati errati!</font>";
}
if(isset($_GET['ok'])) { 
    //utente esiste
    echo "mi ricordo che la sessione è ".$_SESSION['mymail']."<br />"; 
    echo "<font color='blue'>va bene</font>";
}
 
ma cos'è quel sec_session_start() ??? non fa parte delle api ufficiali di php

adesso che me lo fai notare:cool:..è una funzione che crea la sessione ma non so come modificare..:book:
PHP:
include 'functions.php';
sec_session_start(); // usiamo la nostra funzione per avviare una sessione php sicura
if(isset($_POST['email'], $_POST['p'])) { 
   $email = $_POST['email'];   
   $password = $_POST['p']; // Recupero la password criptata.
   if(login($email, $password, $mysqli) == true) {
         $_SESSION['mymail']= $_REQUEST['email'];...
functions.php
PHP:
function sec_session_start() {
        $session_name = 'mymail'; // Imposta un nome di sessione
        $secure = false; // Imposta il parametro a true se vuoi usare il protocollo 'https'.
        $httponly = true; // Questo impedirà ad un javascript di essere in grado di accedere all'id di sessione.
        ini_set('session.use_only_cookies', 1); // Forza la sessione ad utilizzare solo i cookie.
        $cookieParams = session_get_cookie_params(); // Legge i parametri correnti relativi ai cookie.
        session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly); 
        session_name($session_name); // Imposta il nome di sessione con quello prescelto all'inizio della funzione.
        session_start(); // Avvia la sessione php.
        session_regenerate_id(); // Rigenera la sessione e cancella quella creata in precedenza.
}
il tutto scopiazzato da "Creare-uno-Script-Sicuro-per-il-Login-Usando-PHP..."
 
Ultima modifica di un moderatore:
Ok il codice che hai pubblicato sta bene.
Ti basta inserire questa riga nel primo codice:
PHP:
   $email = $_POST['email'];   //questa c'è già
$_SESSION['email']=$email; // questa è da aggiungere
A questo punto in qualsiasi pagina ti basta richiamare quella funzione sec_session_start() e poi dopo potrai utilizzare la variabile $_SESSION['email'] che conterrà la mail.
Prova e fammi sapere.
 
Ok il codice che hai pubblicato sta bene.
allora se ho ben capito..:book: ho fatto cosi..
1° file:login.php
PHP:
<?php 
include 'secure/functions.php';
sec_session_start() ;
?> 
//codice html

<form action="secure/process_login.php" method="post" name="login_form">//parametri mail e pws
 <input type="button"... </form>
 <?php if(isset($_GET['ok'])) {?>
<?php echo "mi ricordo che la sessione è ".$_SESSION['mymail']."<br />"; ?> //riga 537
2)chiamata dal form
PHP:
<?php 
include 'functions.php';
session_start(); //provato anche senza..non cambia
if(isset($_POST['email'], $_POST['p'])) { 
   $email = $_POST['email'];   
   $password = $_POST['p']; // Recupero la password criptata.
   if(login($email, $password, $mysqli) == true) {
       $_SESSION['mymail']= $email;
 header('Location: ../login.php?ok=1');
la risposta è... 'OK' :crying::crying:
Notice: Undefined index: mymail
C:\xampp\htdocs\test\login.php on line 537
---
funziona correttamente solo eliminando la chiamata alla funzione sec_session_start() e usando session_start() standard su ogni file..ma a quel punto mancano i parametri di controllo sulla sessione..non so proprio come fare
ciao
 
cmq sec_session_start() puoi sostituirla con session_start() in fin dei conti non fa nulla di veramente utile
 
In realtà è utile per settare i cookie.
Per quanto riguarda la sessione puoi settare il nome in session_name().
Poi per vederla prova a stampare quello che ti restituisce la funzione session_name() e hai fatto.
 
In realtà è utile per settare i cookie.
Per quanto riguarda la sessione puoi settare il nome in session_name().
Poi per vederla prova a stampare quello che ti restituisce la funzione session_name() e hai fatto.
sono riuscito facendo partire la funzione solo da login.php ed eliminando alcune chiamate della function()
PHP:
<?php 
include 'secure/functions.php';
sec_session_start();
session_start();
?>
Codice:
function sec_session_start() {
       // $session_name = 'mymail'; // Imposta un nome di sessione
       // session_name($session_name); // Imposta il nome di sessione con quello prescelto all'inizio della funzione.
        //session_start(); // Avvia la sessione php.
quindi direi che il tutto funziona come dovrebbe..
grazie:beer:
 
Se commenti quelle righe allora sono inutili anche altre funzioni come questa:
PHP:
session_name($session_name);
Quindi puoi commentare anche questa.
 
Se commenti quelle righe allora sono inutili anche altre funzioni come questa:
PHP:
session_name($session_name);
Quindi puoi commentare anche questa.
beh! ho lasciato
Codice:
function sec_session_start() {
        $secure = false; // Imposta il parametro a true se vuoi usare il protocollo 'https'.
        $httponly = true; // Questo impedirà ad un javascript di essere in grado di accedere all'id di sessione.
        ini_set('session.use_only_cookies', 1); // Forza la sessione ad utilizzare solo i cookie.
        $cookieParams = session_get_cookie_params(); // Legge i parametri correnti relativi ai cookie.
        session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly); 
        session_regenerate_id(); // Rigenera la sessione e cancella quella creata in precedenza.

non so se carica i parametri...(come faccio a saperlo ??) forse dovrei mettere nel login.php prima session_start() poi la funzione
PHP:
<?php 
include 'secure/functions.php';
session_start();
sec_session_start();

?>
 
Se non li commenti li carica. Però il session_start() messo prima della chiamata della funzione non dovrebbe servire.
 

Discussioni simili