Visualizzazione di pagina

Bizio2009

Utente Attivo
12 Giu 2009
310
0
0
Ciao a tutti! Ho questo codice:

PHP:
<?php

require('config.php');

if(!isset($_SESSION['login']))
{
header('Location: localhost/login.php');
exit;
}
    $default = mysql_fetch_array(mysql_query("SELECT cognome_utente, nome_utente FROM utenti WHERE id = '{$_SESSION['login']}' LIMIT 1"));


?>
In locale mi funziona, ma come faccio, cosa devo cambiare per non far visualizzare la pagina in questione? (a meno che un utente non si registri...).

Ho provato al posto di localhost a mettere il sito/pagine.html ma nulla, si vede lo stesso.

Grazie molte!
 
ciao
scusa ma non capisco molto quello che intendi.
dal codice che hai postato l'unica cosa che si capisce è che se la session non esiste ti rimanda alla pag di login, se esiste riempie una variabile (e poi?) e dovrebbe rimanerti una pagina bianca
 
Se la pagina si vede dovrebbe voler dire che viene eseguita, quindi il supporto per PHP non dovrebbe essere il problema.
Sembra inve che in remoto il controllo non funzioni perché la sessione viene creata comunque.
 
ciao
scusa ma non capisco molto quello che intendi.
dal codice che hai postato l'unica cosa che si capisce è che se la session non esiste ti rimanda alla pag di login, se esiste riempie una variabile (e poi?) e dovrebbe rimanerti una pagina bianca
ciao borgo :)
Il php lo supporta...mettendo il codice postato succede che la pagina si vede lo stesso anche se l'utente non si è registrato.

Vorrei che l'utente visualizzasse la pagina solo se registrato...

Grazie!
 
header('Location: localhost/login.php');
Ho provato anche a togliere localhost, ma la pagina .html viene visualizzata ugualmente...
così: header('Location: login.php');

Grazie!
 
ciao
ma la pagina .html viene visualizzata ugualmente...

così a lume di naso:
sembra che la sessione si formi sia che l'utente si registri sia che non si registri.
se è così l'errore, con molta probabilità, non si trova nel codice che hai postato ma nella pagina in cui fai il login.
in tale pagina probabilmente hai un form per inserire la pass (è i un db?) e verifiche la correttezza della stessa
se la pass è corretta allora crei la sessione
se non è corretta allora non la crei
 
La pagina di login.php è questa:

PHP:
<?php
// Includo la connessione al database
require('config.php');


// Se il modulo viene inviato...
if(isset($_POST['login']))
{
	
	// Dati Inviati dal modulo
	$cognome_utente = (isset($_POST['cognome_utente'])) ? trim($_POST['cognome_utente']) : '';	// Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato d� di default ''
        $nome_utente = (isset($_POST['nome_utente'])) ? trim($_POST['nome_utente']) : '';	// Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato d� di default ''
	$pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : '';	// Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato d� di default ''
	
	// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
	if (!get_magic_quotes_gpc()) {
        $cognome_utente = addslashes($cognome_utente);
    	$nome_utente = addslashes($nome_utente);
		$pass = addslashes($pass);
	}
	
	// Crypto la password e la confronto con quella nel database
	$pass = md5($pass);
	
	// Controllo l'utente esiste
	$query = mysql_query("SELECT id FROM utenti WHERE cognome_utente = '$cognome_utente' AND nome_utente = '$nome_utente' AND pass = '$pass' LIMIT 1");
	
	// Se ha trovato un record
	if(mysql_num_rows($query) == 1)
	{
		// prelevo l'id dal database
		$login = mysql_fetch_array($query);
		
		// Creo una variabile di sessione
		$_SESSION['login'] = $login['id'];
		
		// reindirizzo l'utente
		header('Location: privata.php');
		exit;
	}
	// se non esiste da l'errore
	else
		die('Nome Utente o Password errati');
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login</title>
</head>

<body>
<div align="center">
<form action="" method="post">
<table bgcolor="#bdd3ad" cellspacing="1" cellpadding="10" border="1">
<tr>
		<th colspan=2>ACCESSO ALL' AREA PRIVATA</th>
	</tr>

<tr>
		<td width="90" align="right"><font face="Verdana" size="2">COGNOME</font>:</td>
		<td width="140"><input name="cognome_utente" type="text" id="cognome_utente" value="" size="15" align="middle onfocus="if(this.value=='Nome Utente') this.value='';" /><br /></td>
	</tr>
	<tr>
		<td width="90" align="right"><font face="Verdana" size="2">NOME</font></td>
		<td width="140"><input name="nome_utente" type="text" id="nome_utente" value="" size="15" align="middle onfocus="if(this.value=='Nome Utente') this.value='';" /><br /></td>
	</tr>

<tr>
		<td width="90" align="right"><font face="Verdana" size="2">PASSWORD</font></td>
		<td width="140"><input name="pass" type="password" id="pass" value="" size="15" align="middle onfocus="if(this.value=='Password') this.value='';" /><br /><br /></td>
	</tr>

	<tr>
		<td colspan="2" height="60" align="center">

<input name="login" width=80 type="submit" value="ACCEDI" align=middle onclick="check()">
<input name="reset" type="reset" value="ANNULLA" width=80  align=middle>
		</td>
	</tr>
</table>
</form>
</div>
</body>
</html>
 
Nell'index ho messo l'indentificazione del cliente, con registrazione e login e lo fanno se autentico entrare nel sito.

Però...se l'utente naviga in altre pagine e vede nella barra del broswer la pagina.html e poi se la segna, la immette direttamente scavalcando la registrazione o login.

Forse mi ero spiegato male? Io vorrei invece che ad ogni pagina (anche se non la mette nella barra del broswer) se non autenticato gli dica "Non sei loggato"...

Grazie!
 
ciao, prova a mettere nella pag di login
PHP:
//..............
// se non esiste da l'errore 
    else {
		// prova a mettere questa riga: unset($_SESSION['login']);
		// oppure questa: session_destroy();

        die('Nome Utente o Password errati');
		}
//.................
 
Mi dà questo:


Parse error: syntax error, unexpected $end in C:\HostingSpaces\\.it\wwwroot\login.php on line 88

Comunque Borgo, la registrazione, il login e il logout mi funzionano alla perfezione.
L'utente NON riesce ad entrare nel sito se non si registra(e fino a qui benissimo.......ma se si registra...vede l'indirizzo delle altre pagine (navigando tra i menù) e se le segna...può benissimo entrare da lì, capisci che intendo?

Esempio: il sito è pinco_pallo.it........non entri....registrati...ok...ora login e perfetto sei entrato...ora navigo...vado in pinco_pallo.it/pallinabianca.html e poi pinco_pallo.it/baretto.html.....ecco se io cliccassi una volta aperto internet pinco_pallo.it/baretto.html entra senza doversi registrare e loggare quindi sforando tutto, scavalcando la pagina index.

Spero di essermi spiegato...ciao e grazie!!! :)
 
Siccome il login eccetera mi funzionano non dovrei mettere in ogni pagina.html questo codice?

PHP:
<?php

require('config.php');

if(!isset($_SESSION['login']))
{
header('Location: login.php');
exit;
}
    $default = mysql_fetch_array(mysql_query("SELECT cognome_utente, nome_utente FROM utenti WHERE id = '{$_SESSION['login']}' LIMIT 1"));


?>
Solo che la pagina non index (pinco_pallo.it/pallina.html) se la digito prima di entrare nel sito la visualizzo lo stesso senza registrazione...
 
Opss scusami è vero, perdonatemi. Bastava cambiare l'estensione in php. Mea culpa :hammer:
Ciao!!!
 
ciao
Siccome il login eccetera mi funzionano non dovrei mettere in ogni pagina.html questo codice?
si in tutte le pagine che vuoi proteggere, in particolare l'istruzione
session_start() devi metterla in tuttle pagine in cui usi le sessioni, login compresa
 

Discussioni simili