Sessioni

  • Creatore Discussione Creatore Discussione pane92
  • Data di inizio Data di inizio
Stato
Chiusa ad ulteriori risposte.

pane92

Nuovo Utente
8 Giu 2011
3
0
0
Ho una pagina php di nome: areariservata.php
PHP:
<?php

	$conn = mysql_connect("localhost", "root", "");
	if (! $conn)
	{
		echo ("Errore durante la connessione a MySQL.");
		exit();
	}
			
	mysql_select_db("v&pcomputers");
	
	if (isset($_POST['Username']))
  	{
		$Username=$_POST['Username'];
		$Password=$_POST['Password'];
 		$query_login="SELECT * FROM tecnico WHERE Username='$Username' AND Password='$Password'";
  		$rslt_login=mysql_query($query_login);
 
  	if (mysql_num_rows($rslt_login) == 1)
    {
    	// Esiste un record con questi username più(firma)password:
    	// inserisco i dati nella sessione
   	 session_start();
   	 $_SESSION['Username']=$Username;
	header('location:areariservata2.php');
    }
   else header('location:areariservata.php');
  }
  
  mysql_close($conn);
?>
<html><!-- InstanceBegin template="/Templates/modello.dwt" codeOutsideHTMLIsLocked="false" -->...............................


		<form name="promo2" method="POST"  action="areariservata.php">
		 <br>
		 <div align="center"><img src="http://forum.mrwebmaster.it/images/username.jpg" width="99" height="29"></div><br>
		 <div align="center"><input name="Username" type="text" value="Inserisci Username" maxlength="15"></div><br>
		 <div align="center"><img src="http://forum.mrwebmaster.it/images/password.jpg" width="99" height="29"></div><br>
		 <div align="center"><input name="Password" type="password" value="" maxlength="15"></div><br> 
		 <div align="center"><input name="ACCEDI" type="submit" value="ACCEDI"></div>
		</form>

questo codice dovrebbe farmi accedere ad areariservata2.php se l'utente inserisce dei dati nei campi password e username.

l'area riservata2.php inizia cosi:
PHP:
<?php

session_start();
if (!isset($_SESSION['Username']))
  {
    header('location:index.php');
  exit;
  }
prosegue con le interrogazioni al database.

il problema è che tutto ciò non funziona. rimane sulla pagina areariservata.php in tutti i casi. anche se si inseriscono valori nei campi.
QUalcuno ha idee?


Precisazione, rimane sulla stessa pagina con i seguenti errori:
Codice:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at h:\easyphp1-8\www\v&p\areariservata.php:1) in h:\easyphp1-8\www\v&p\areariservata.php on line 23

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at h:\easyphp1-8\www\v&p\areariservata.php:1) in h:\easyphp1-8\www\v&p\areariservata.php on line 23

Warning: Cannot modify header information - headers already sent by (output started at h:\easyphp1-8\www\v&p\areariservata.php:1) in h:\easyphp1-8\www\v&p\areariservata.php on line 25
 
Ultima modifica di un moderatore:
La funzione session_start() deve essere richiamata prima di tutto il resto, altrimenti può generare degli errori. Controlla che all'inizio del file non siano presenti spazi bianchi o altri caratteri. Eventualmente modifica la pagina così:
PHP:
<?php
session_start();

$conn = mysql_connect('localhost', 'root', '') or die('Errore durante la connessione a MySQL.');
mysql_select_db('v&pcomputers');

if (isset($_POST['submit'])) {
    $username = isset($_POST['Username']) ? trim($_POST['Username']) : '';
    $password = isset($_POST['Password']) ? trim($_POST['Password']) : '';
    
    $query_login = "SELECT * FROM tecnico WHERE Username = '{$Username}' AND Password = '{$Password}'";
    $rslt_login = mysql_query($query_login) or die('Errore durante l\'esecuzione della query SQL.');

    if (mysql_num_rows($rslt_login) == 1) {
        $_SESSION['Username'] = $username;
        header('Location: areariservata2.php');
    }
    else {
        header('Location: areariservata.php');
    }
}

mysql_close($conn);
?>
Tuttavia se non filtri l'input qualunque utente con un minimo di esperienza può accedere al sistema senza conoscere le credenziali. Come se non bastasse la libreria mysql è deprecata. Usa PDO.
 
mah....

Ora mi da questo errore:
Warning: session_start(): Cannot send session cache limiter - headers already sent...
... non mi va in areariservata2.php.
Non capisco il motivo.


Grazie per il consiglio
 
Ultima modifica:
Allora optiamo per una soluzione più drastica. Metti all'inizio della pagina:
PHP:
<?php
ob_start();
?>
E alla fine (anche dopo il codice HTML):
PHP:
<?php
$contents = ob_get_contents();
ob_end_clean();

session_start();
echo $contents;
?>
Questo dovrebbe funzionare.
 
Ho risolto cosi....

Grazie di tutto...
Alla fine ho provato un altro metodo, dall'areariservata richiamo con il form una pagina login cosi fatta:
PHP:
<?php
session_start();
$hostname='localhost';
$username='root';
$passwd='';
$conn=mysql_connect($hostname,$username,$passwd);

if(! $conn)
{
echo ("server connection error");
exit();
}

mysql_select_db('v&pcomputers');

$nomeU = $_POST['Username'];
$passw = $_POST['Password'];

if(($nomeU=="")||($passw==""))
{
        echo("Inserire i campi<br>");
        header('Location:areariservata.php');
        exit();
}

$querylogin = mysql_query("SELECT tecnico.Username, tecnico.Password FROM tecnico WHERE tecnico.Username = '$nomeU' AND tecnico.Password = '$passw'") or die(mysql_error());

if (mysql_num_rows($querylogin) == 1)
{
        $_SESSION['nomeU'] = $nomeU;
                ?>
                <META HTTP-EQUIV=Refresh CONTENT="1; URL=areariservata2.php">
                Login effettuato con successo..
                <?php
}
else
{
        $_SESSION['nomeU'] = 0;
        ?>
        <META HTTP-EQUIV=Refresh CONTENT="1; URL=areariservata.php">
        Utente non presente nel database..<br>
        wait
        <?php
}
mysql_close($conn);
?>
in areariservata2 faccio un controllo sulla sessione e funziona tutto... anke il logout!!!
Grazie per l'assistenza!

PS: Non so perchè ma con header location non mi va. Devo utilizzare il META. Un mistero!
 
Ultima modifica di un moderatore:
Aiutooooooooo html

Salve a tutti,

Ho il seguente problema. Innanzi tutto, ho creato un form con la registrazione e c'è un tastino "Aggiunta Utenti". Una volta che mi sono registrato, devo far in modo che questo tasti scompaia. Secondo poi, ho letto svariate guide sulle sessioni. Si possono caricare delle pagine in html. Ad esempio in php si adopera "require_once("data.php");
". e in html ???? C'è qualcosa di simile ??? Se io ho una pagina in html, come faccio a riporatere il seguente codice di protezione ????? Ecco il codice:

Codice:
<?php
//pagina visibile solo agli utenti registrati.
if(@$_SESSION['name']) {
    //ok
}else echo "Non sei loggato, fai il login e riprova";
?>

Inoltre volevo sapere se era possibile inserire un "benvenuto pinco pallino" ???? Mi servirebbe al più presto una risposta, perkè dovrei portare a termine un lavoro grazie.
 
ciao
vai nella sezione def orum che ti interessa (mi sembra php), trovi il pulsante "inizia nuova discussione" metti il titolo e la tua domanda, poi dai l'invio.
se non sei loggato alla pressione del "inizia" ti viene chiesto di loggarti.

p.s.
non sono molto accetti i titoli tipo auto...., specifica nel titolo il tuo problema
 
Ok, chiudiamo questa discussione così non si creano confusioni tra post.
 
Stato
Chiusa ad ulteriori risposte.

Discussioni simili