problema con l'indirizzamento della pagina

  • Creatore Discussione Creatore Discussione ivn85
  • Data di inizio Data di inizio

ivn85

Nuovo Utente
18 Ott 2012
10
0
0
salve a tutti, sono ancora qui per chiedervi un aiuto, in pratica ho creato questa pagina di login perfettamente funzionante con l'host di myphp
PHP:
<?php
include 'db_connect.php';
include 'functions.php';
sec_session_start(); // Inizializziamo la sessione sicura 
if (isset($_POST['email'], $_POST['p'])) {
    $email    = $_POST['email'];
    $password = $_POST['p']; // Passiamo la password criptata
    if (login($email, $password, $mysqli) == true) {
        // Se il login riesce
		header ('location:../COLLEGAMENTI/primapagina.php');
        
    } else {
        // Se il login fallisce
        echo 'errore login';
    }
} else {
    // Se la variabile non viene inviata alla pagina corretta
    echo 'Richiesta non valida!';
}
?>

come dicevo nel mio pc funziona perfettamente mentre nel server quando conpilo la pagina del form si blocca in questo script.
se invece del ' header location ' inserisco echo' tutto ok ' mi stampa il testo ok, quindi il login e la password vengono letti bene dal database ma in header non mi reindirizza nella pagina che vorrei io, come posso rimendiare? grazie in anticipo
 
Ultima modifica di un moderatore:
Ciao è normale che si blocchi... se ci sono degli output prima di header location.
Usa javascript:
Codice:
if (login($email, $password, $mysqli) == true) {
?>
<script>
    window.location.assign("http://www.tuosito.com/COLLEGAMENTI/primapagina.php")
</script>
<?php
} else {
// Se il login fallisce
echo 'errore login';
}
} else {
// Se la variabile non viene inviata alla pagina corretta
echo 'Richiesta non valida!';
}
?>
 
ciao
oppure prova ad usare ob_start...ob_end_flush
PHP:
<?php
ob_start();
include 'db_connect.php';
include 'functions.php';
sec_session_start(); // Inizializziamo la sessione sicura 
if (isset($_POST['email'], $_POST['p'])) {
    $email    = $_POST['email'];
    $password = $_POST['p']; // Passiamo la password criptata
    if (login($email, $password, $mysqli) == true) {
        // Se il login riesce
        header ('location:../COLLEGAMENTI/primapagina.php');
        
    } else {
        // Se il login fallisce
        echo 'errore login';
    }
} else {
    // Se la variabile non viene inviata alla pagina corretta
    echo 'Richiesta non valida!';
} 
ob_end_flush();
?>
sarebbe meglio del js in cui si vede dove reindirizzi
 
salve ragazzi, ho provato la soluzione di Filomeni e funziona alla grande, grazie anche a te borgo italia, come sempre il vostro supporto è ottimo e più che gradito, grazie grazie :)
 
ragazzi ancora buongiorno, volevo chiedervi un'altro piccolo aiuto, come avrete capito in php mi diletto appunto come un dilettante e apprendo da autodidatta.
Arrivo al punto, nelle mie pagina di login ho avviato la funzione sec_session_start.
PHP:
include 'db_connect.php';
include 'functions.php';
sec_session_start(); // Inizializziamo la sessione sicura 
if (isset($_POST['email'], $_POST['p'])) {
    $email    = $_POST['email'];
    $password = $_POST['p']; // Passiamo la password criptata
    if (login($email, $password, $mysqli) == true) {

nelle pagine successive dove viene reindirizzato dopo il login avvio con la funzione
PHP:
function sec_session_start() {
        $session_name = 'sec_session_id'; // Diamo un nome alla sessione
        $secure = false; // Impostate su true se utilizzate l'HTTPS
        $httponly = true; // Questa variabile impedisce al JS di accedere all'ID di sessione
  
        ini_set('session.use_only_cookies', 1); // Forza la sessione ad utilizzare unicamente i cookies
        $cookieParams = session_get_cookie_params(); // Preleva i parametri correnti dei cookies
        session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly); 
        session_name($session_name); // Setta il nome di sessione come dalla variabile
        session_start(); // Inizializzo la sessione
        session_regenerate_id(true); // Rigenero la sessione sovrascrivendo la precedente

}

il mio problema qual'è? se digito dal web l'indirizzo che è all'interno del mio sito, esempio http://www.ilmiosito/pagina1.php, non mi fa il controllo della sessione e apre la pagina che in teoria dovrebbe costringere l'utente a fare il login, cosi come tutte le varie pagine che desidero siano protette da un login.
 
ciao, prima di tutto mi scuso per il ritardo, sto lavorando finalmente su questa cosa, allora il problema e che se punto direttamente sulla pagina mi apre la pagina e non mi fa il redirect su login. come se la pagina non fosse protetta dalla sessione
 
ciao
probabilmente non valorizzi la sessione
io metterei nella parte di log
PHP:
<?php
 //....
 if (login($email, $password, $mysqli) == true) {
        // Se il login riesce
		$_SESSION['pas']=$password;
        header ('location:../COLLEGAMENTI/primapagina.php');  
    } else {
        // Se il login fallisce
        echo 'errore login';
    } 
//.....
?>
poi nella riservata primapagina.php
PHP:
<?php
session_start();
if(!isset($_SESSION['pas'])){
	header ('location:pagina_di_log.php');//a parte i collegamenti da verificare
	exit();
}
//tutto il resto
?>
volendo puoi aggiungere un controllo, io almeno faccio così
PHP:
<?php
 //....
 if (login($email, $password, $mysqli) == true) {
        // Se il login riesce
		$_SESSION['pas']=$password;
		header ('location:../COLLEGAMENTI/primapagina.php?pas='.md5($password));  
    } else {
        // Se il login fallisce
        echo 'errore login';
    } 
//.....
?>

PHP:
<?php
session_start();
if(!isset($_SESSION['pas']) || !isset($_GET['pas'] || md5($_SESSION['pas'])!=$_GET{'pas']){
	header ('location:pagina_di_log.php');//a parte i collegamenti da verificare
	exit();
}
//tutto il resto
?>
 

Discussioni simili