Area Riservata Mysql+php

xMorpheus84x

Nuovo Utente
22 Giu 2009
3
0
0
Dovrei creare un area ad accesso riservato nel mio sito cerco qualcuno disposto a darmi una mano in cambio posso publicizzare sul mio sito il creato e inserire il suo link. Comunque io ho gia qualcosa ma non soddisfa le mie esigenze per questo cerco qualcuno in grado di aiutarmi. E' importante sono un ragazzo serio.
Grazie
Simone
 
prima di tutto è necessario strutturare il database, direi che tre campi come i segunti dovrebbero bastare:
  • ID, intero, autoincrement, chiave primaria
  • username, varchar
  • password, varchar
 
Seconda parte, il form:
PHP:
<?php 
session_start ();//facciamo partire la sessione
//controlliamo i dati inviati    
 if ((!isset($_POST['utente'])) && (!isset($_POST['password']))) 
 { 
// ecco il form
  echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\"> 
  User: <input type=\"text\" name=\"username\"><br> 
  Password: <input type=\"password\" name=\"password\"><br> 
  <input type=\"submit\" value=\"Invia\"></form>"; 
  }else{ 
// query in tabella
  $sql = mysql_query("SELECT * FROM tabella WHERE username='".$POST['username']."' AND '".$_POST['pasword']."'");
  if (mysql_num_rows($sql)>0)
  {
  $_SESSION['username']=$_POST['username']; 
  $_SESSION['password']=$_POST['password']; 
  header("Location: pagina_riservata.php");
  }
 else {echo "Login errato";} 
  }
?>
 
Ultima modifica:
Ultima parte, la pagina riservata:
PHP:
<?php
session_start();
if(isset($_SESSION['username'])&& isset($_SESSION['password']))
{
echo "Ciao " . $_SESSION['username']; 
}else{
header("Location: form.php");
}
?>

quello che ti ho mostrato è un esempio estremamente semplice, con un pò di studio imparerai a personalizzarlo.
 
area riservata

grazie per l'aiuto, ma uno semplice lo avevo pure io a me serve una mano a personalizzarlo per il mio sito partendo dal presupposto che non conosco il php.
grazie
simone
 
devono loggarsi piu utenti e ogni utente deve avere accesso ai suoi dati personali oltre a quelli che devono essere inseriti da un amministratore.
 
basta che ti crei una tabella relativa ai dati degli utenti, ad ogni record associ l'id del relativo utente ricavandolo dalla tabella che ho strutturato nel mio esempio
 
login utenti php/mysql

Salve,
scusatemi se mi intrometto nella discussione ma è da poco che utilizzo PHP e MySql - ho trovato l'argomento affrontato da xMorpheus84x e soprattutto le risposte di Eliox molto esaustive al mio problema (login di più utenti e ogni utente accede esclusivamente ai suoi dati personali ben archiviati nel database).
Ho cercato di seguire i tuoi consigli Eliox creando ed associando ad ogni record l'id del relativo utente ricavandolo da una tabella che ho creato nel mio database.
Tutto sembra funzionare bene ma ad un certo punto mi sono ritrovato con il problema che nel file login.php se l'utente sbaglia il login non mi compare l'istruzione echo "login errato";
Forse ho fatto un pò di bordello con lo script php e HTML.


ecco "login.php"
<?php
//connessione al databese
include 'connect.php';

//parte la sessione
session_start ();

//controllo dei dati inviati
if ((!isset($_POST['username'])) && (!isset($_POST['password'])))
{

// form per il login
echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">
User: <input type=\"text\" name=\"username\"><br>
Password: <input type=\"password\" name=\"password\"><br>
<input type=\"submit\" value=\"Invia\"></form>";
}else{

// query tabella utenti
$sql = mysql_query("SELECT * FROM utenti WHERE username='".$_POST['username']."' AND password=MD5('".$_POST['password']."')");
while ($prova = mysql_fetch_array($sql)) {
$num= $prova[0];

if (mysql_num_rows($sql)>0)
{
$_SESSION['username']=$_POST['username'];
$_SESSION['password']=$_POST['password'];
//passo la variabile con ID dell'utente
header("Location: pagina_riservata.php?id=$prova[0]");
}
else {echo "Login errato";}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<head>
<title>La mia prima pagina XHTML</title>
<link rel="stylesheet" href="stile.css" type="text/css">
<link rel="shortcut" href="http://localhost/favicon.ico">
</head>
<body>
<div id="contenitore">
<h1>AREA LOGIN!</h1>


<--dovrei mettere qui lo script relativo al form-->
<div class="footer">
<?php include 'footer.php'; ?>
</div>
</div>
</body>
</html>



ll file "pagina_riservata.php":

<?php
//connessione al database
include 'connect.php';

$result = $_GET['id'];

//inizio sessione per l'utente che ha effettuato il login
session_start();
if(isset($_SESSION['username'])&& isset($_SESSION['password']))
{

echo "Benvenuto " . $_SESSION['username'];

}else{
header("Location: form.php");

}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<head>
<title>prova</title>
<link rel="stylesheet" href="stile.css" type="text/css">
<link rel="shortcut" href="http://localhost/favicon.ico">
</head>
<body>
<div id="contenitore">
<?php

//query tabella anagrafico
$query_limit = mysql_query("SELECT * FROM personale WHERE anagrafico.utente_id = '$result'");
while($risultato = mysql_fetch_array($query_limit)) {
$cognome = $risultato[2];
$nome = $risultato[3];
$data_nascita = $risultato[4];
$luogo_nascita = $risultato[5];

//stampa della tabella con i dati
echo "<table>\n";
echo "<tr>\n";
echo "<td>" . $cognome . "&nbsp</td>\n";
echo "<td>" . $nome . "&nbsp</td>\n";
echo "<td>" . $data_nascita . "&nbsp</td>\n";
echo "<td>" . $luogo_nascita . "&nbsp</td>\n";
echo "</tr>\n";
echo "</table>\n";
}
?>

è sicuramente pieno di errori ma.....:boxing:perdonatemi !!! E' da poco che mi cimento in queste cose (autodidatta ).
Dov'è che ho sbagliato?
Grazie per l'aiuto

P.S.: ho creato anche un semplice script per logout
 
stampati il valore restituito da mysql_num_rows(), se ti restituisce più di 0 anche nel caso in cui i dati siano errati l'errore sta li
 
Grazie per avermi risposto:fonzie:
Ho provato a chiamare l'istruzione if (mysql_num_rows($sql)>0) prima del ciclo while ($prova = mysql_fetch_array($sql)) { è sembra che funzioni perfettamente.
Ti posto la parte dello script modificato:

// query tabella
$sql = mysql_query("SELECT * FROM utenti WHERE username='".$_POST['username']."' AND password=MD5('".$_POST['password']."')");

if (mysql_num_rows($sql)>0)
{
while ($prova = mysql_fetch_array($sql)) {
$num= $prova[0];

$_SESSION['username']=$_POST['username'];
$_SESSION['password']=$_POST['password'];
header("Location: pagina_riservata.php?id=$prova[0]");
}
}else{
echo "Login errato";
}
}
?>

Ora, dovrei necessariamente suddividere i dati della persona in più tabelle da presentare quindi in più pagine php. Una volta che è stato effettuato il login con form.php è sufficiente inviare $result = $_GET['id']; in ogni pagina riferita alla persona?
 
Effettua le seguenti modifiche. Il primo pezzo è quello che hai appena modificato, il secondo è l'inizio di ogni altro file php dove volevi leggere il parametro 'id'.

Codice:
$_SESSION['password']=$_POST['password']; 
[COLOR="Red"]$_SESSION['user_id']=$prova[0];[/COLOR]
//passo la variabile con ID dell'utente 
[COLOR="red"]header("Location: pagina_riservata.php");[/COLOR] // no parametro

Codice:
if (!isset($_SESSION['user_id'])) die("Utente non registrato");
[COLOR="red"]$result=$_SESSION['user_id'];[/COLOR] // no $_GET['id];
 
Ultima modifica:
:fonzie: Ho fatto le modifiche allo script ...perfetto....funziona benissimo..la variabile dell'Id utente viene passata regolarmente in tutte le pagine...per il momento và bene così..ci sono sicuramente altre migliorie da fare dal punto di vista della sicurezza (nel form di login immagino), cercherò di farle autonomamente altrimenti....tam tam al forum.
Grazie ancora e.....vista l'ora...buonanotte :dormo:
 
ciao ma se volessi tornare alla pagina riservata come devo creare il link per passargli l'id della persona loggata.
 

Discussioni simili