Ciao a tutti, sono un nuovo utilizzatore del linguaggio PHP e dei siti dinamici e avevo intenzione di sviluppare un sito collegato ad un database per in grado di eseguire registrazione di utente, login e sessioni.
Un pò alla volta sto settando il codice che trovo dai vari spunti su rete, però adesso mi sono imbattuto in un problema disu cui non ho trovato indicazioni, spero mi possiate essere di aiuto.
Ho creato una sessione, dopo il login, che mi rimanda ad una pagina del sito con alcuni link (realizzati con il canonico come esempio) purtroppo mi sono accorto che questi o vengono completamente ingorati da alcuni browser come Explorer, oppure anche se attivi mi riconducono alla stessa pagina in cui mi trovo (Firefox si comporta così).
Vi allego anche il codice php che sto utilizzando per quella pagina
<?php
$DB_host = "localhost";
$DB_user = "root";
$DB_password = "";
$DB_name = "utenti";
$link = mysql_connect($DB_host, $DB_user, $DB_password);
if (!$link) {
die ('Non riesco a connettermi: ' . mysql_error());
}
$db_selected = mysql_select_db($DB_name, $link);
if (!$db_selected) {
die ("Errore nella selezione del database: " . mysql_error());
}
if($_POST) {
effettua_login();
} else {
mostra_form();
}
function mostra_form()
{
// mostro un eventuale messaggio
if(isset($_GET['msg'])) {
echo '<div id="benvenuto">'.htmlentities($_GET['msg']).'</div>';
}
}
function effettua_login()
{
// recupero il nome e la password inseriti dall'utente
$nome = trim($_POST['nome']);
$password = trim($_POST['password']);
// verifico se devo eliminare gli slash inseriti automaticamente da PHP
if(get_magic_quotes_gpc()) {
$nome = stripslashes($nome);
$password = stripslashes($password);
}
// verifico la presenza dei campi obbligatori
if(!$nome || !$password) {
$messaggio = urlencode("Non hai inserito il nome o la password");
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
exit;
}
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
$nome = mysql_real_escape_string($nome);
$password = mysql_real_escape_string($password);
// preparo ed invio la query
$query = "SELECT id FROM utenti WHERE nome = '$nome' AND pswd = '$password'";
$result = mysql_query($query);
// controllo l'esito
if (!$result) {
die("Errore nella query $query: " . mysql_error());
}
$record = mysql_fetch_array($result);
if(!$record) {
$messaggio = urlencode('Nome utente o password errati');
header("location: errore.php");
} else {
session_start();
$_SESSION['user_id'] = $record['id'];
$messaggio = urlencode("Login avvenuto con successo - Benvenuto $nome");
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
}
}
?>