Salve a tutti, ho trovato una guida per creare un login che vorrei applicare ad una bacheca nel mio sito. Ho fatto delle piccole modifiche in modo che una volta autenticato, nella stessa pagina appaia la maschera per l'inserimento del commento. Il tutto funziona correttamente, l'unico problema è che non riesco a far passare le variabili in questa maschera, tra cui l'username inserito poco prima nel login. Il codice è il seguente:
come vedete nella mascherina per l'inserimento dei commenti (che appare dopo l'autenticazione) vorrei riportare il nome dell'utente loggato. Per questo ho usato <?php echo ($_POST['nome']); ?>, ma non va? Cosa mi dimentico? Grazie a tutti per l'aiuto.
PS: il messaggio d'errore è "Notice: Undefined index: nome in /membri/***/index.php on line 212
! " La riga 212 è quella in cui vorrei inserire $_POST['nome'].
PHP:
<?php
$DB_host = "localhost";
$DB_user = "***";
$DB_password = "";
$DB_name = "***";
$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 '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
if ($_GET['msg'] == "Login avvenuto con successo"){
?>
<form name='commenta' method='post' action='commento.php'>
<table width="100%" border="0">
<tr>
<td colspan="2" class="partita">Benvenuto <?php echo ($_POST['nome']); ?>! Inserisci un commento</td>
</tr>
<tr>
<td class="cella4">Messaggio: </td>
<td class="cella4"><textarea name="mex" style="width:380px; height:100px;"></textarea></td>
</tr>
<tr>
<td colspan="2" class="cella4">
<input type='submit' name='accedi' value='Invia!'><input type='reset' name='cancella' value='Cancella!'>
</td>
</tr>
</table>
</form>
<?php
}
}
?>
<form name='commenta' method='post' action='index.php'>
<table width="100%" border="0">
<tr>
<td colspan="3" class="partita">Effettua login per inserire un commento</td>
</tr>
<tr>
<td class="cella4" style="width:75px;">Username: </td>
<td class="cella4" style="width:150px;"><input type="text" name="nome" style="width:125px;"></td>
<td class="cella3" rowspan="4">Nuovo utente? <br />Registrati</td>
</tr>
<tr>
<td class="cella4" style="width:75px;">Password: </td>
<td class="cella4" style="width:150px;"><input type="password" name="password" style="width:125px;">
</tr>
<tr>
<td class="cella3" colspan="2">Dati dimenticati?</td>
</tr>
<tr>
<td colspan="2" class="cella3">
<input type='submit' name='accedi' value='Invia!'>
<input type='reset' name='cancella' value='Cancella!'>
</td>
</tr>
</table>
</form>
<?
}
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 pass = MD5('$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: $_SERVER[PHP_SELF]?msg=$messaggio");
} else {
session_start();
$_SESSION['user_id'] = $record['id'];
$messaggio = urlencode('Login avvenuto con successo');
header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
}
}
?>
come vedete nella mascherina per l'inserimento dei commenti (che appare dopo l'autenticazione) vorrei riportare il nome dell'utente loggato. Per questo ho usato <?php echo ($_POST['nome']); ?>, ma non va? Cosa mi dimentico? Grazie a tutti per l'aiuto.
PS: il messaggio d'errore è "Notice: Undefined index: nome in /membri/***/index.php on line 212
! " La riga 212 è quella in cui vorrei inserire $_POST['nome'].