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ì
codice:
<?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 ...

?>
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 è questa


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>
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.
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è???