Con una bella fatica sono riuscito a mettere in piedi un "copia-incolla" di varie funzioni che ho letto su internet.
Lo scopo è, tanto per cambiare, consentire l'accesso alle pagine php previo controllo di nome utente e password.
Stranamente sembra funzionare, se chiamata dalla pagina principale.
Quello che non so fare è ritornare ad una pagina PHP.
In sostanza gli script PHP iniziano tutti così
In pratica (credo) venga riempita una variabile globale (came_from) con l'indirizzo della pagina corrente; se la variabile l' logged non è impostata allora va alla pagina login.php, che è questacodice:<?php if(!isset($_SESSION)) { session_start(); } $_SESSION['came_from'] = $_SERVER['REQUEST_URI']; if (!(isset($_SESSION['logged']) && $_SESSION['logged'] == 1)) { header ("Location: login.php"); exit; } ... qui c'è il resto della pagina cui si può accedere quando loggati ... ?>
E qui casca l'asino (cioè io): c'è un doppio controllo della variabile globale came_from e si usa un campo POST nascosto (hidden) chiamato redirect.codice:<?php if(!isset($_SESSION)) { session_start(); } include 'db.inc.php'; $mysqli = new mysqli(MYSQL_HOSTNAME,MYSQL_USER,MYSQL_PASSWORD,MYSQL_DATABASE); if (mysqli_connect_errno()) { die ('Errore MMM in connessione al DBMS: '.mysqli_connect_error()); } $username = (isset($_POST['username'])) ? trim($_POST['username']) : ''; $password = (isset($_POST['password'])) ? $_POST['password'] : ''; $redirect = (isset($_REQUEST['redirect'])) ? $_REQUEST['redirect'] : 'index.php'; if (isset($_POST['submit'])) { $codicepersonale=$username; $miapassword=$password; $candidato='sememalefico'.$miapassword; $query = 'SELECT * FROM personale WHERE codicepersonale = "' .$codicepersonale. '" AND portalepassword = sha1(sha1('.'"'.$candidato.'"))'; $risultato=$mysqli->query($query); if ($risultato->num_rows > 0) { $row = $risultato->fetch_assoc(); $_SESSION['username'] = $username; $_SESSION['logged'] = 1; $_SESSION['admin_level'] = 1; //tante altre cose lette dal db $mysqli->close(); if (isset($_SESSION['came_from'])) { header("Location: http://" . $_SERVER['HTTP_HOST'] . $_SESSION['came_from']); } else { header ('Refresh: 5; URL=' . $redirect); echo ' Sarai rediretto alla pagina originale</p>'; echo ' Attendi o clicca qui.</p>'; } } else { $_SESSION['username'] = ''; $_SESSION['logged'] = 0; $_SESSION['admin_level'] = 0; $error = ' Impossibile connettersi</p>'; $mysqli->close(); } } ?> <html class="ui-mobile"> <?php include "robajmobile.inc.php"; ?> <body> <div data-role="header"> indietro<h1>Login</h1> </div> <?php if (isset($error)) { echo $error; } ?> <form action="login.php" method="post"> <label for="text-1">Codice personale </label> <input type="text" data-clear-btn="true" name="username" id="username" value=""> <label for="text-2">Password </label> <input type="text" data-clear-btn="true" name="password" id="password" value=""> <input type="hidden" name="redirect" value=""/> <input type="submit" name="submit" value="Login" data-theme="b"/> </form> </body> </html>
Da quanto ho capito è una tecnica abbastanza standard per far sì che si torni alla pagina php dove si è tentati di entrare.
Peccato però... che non funzioni!!!
Chiarisco cosa significa "non funziona": il problema è gestire index.php, diciamo la pagina principale.
Perchè???![]()

Rispondi quotando