[PHP + MySql] Sito con login e sessioni

elricmarci

Nuovo Utente
2 Mar 2012
11
0
0
Salve ragazzi stavo costruendo un sito,ma mi son bloccato in alcuni punti.
Registrando un nuovo utente al sito non ci sono problemi,visto che i dati inseriti nei form, vengono correttamente inviati al DB.

Il problema è il Login dell'utente,non riesco a gestire il login tramite sessioni.
Mi potete gentilmente dare una mano??

Ecco il codice per il login:
Codice:
<HTML>
<HEAD>
<TITLE>Login</TITLE>
</HEAD>
<BODY>
<center>
<br>   
          
    <td><a href="http://forum.mrwebmaster.it/index.php"><img src="http://forum.mrwebmaster.it/img/home.png"></a></td>
    <td><a href="http://forum.mrwebmaster.it/cod/reg.php"><img src="http://forum.mrwebmaster.it/img/registrati.png"></a></td>
    <td><a href="http://forum.mrwebmaster.it/cod/main_login.php"><img src="http://forum.mrwebmaster.it/img/login.png"></a></td>
    <td><a href="http://forum.mrwebmaster.it/cod/modwii.php"><img src="http://forum.mrwebmaster.it/img/modwii.png"></a></td>
    <td><a href="http://forum.mrwebmaster.it/cod/router.php"><img src="http://forum.mrwebmaster.it/img/router.png"></a></td>
    <td><a href="http://forum.mrwebmaster.it/cod/shop.php"><img src="http://forum.mrwebmaster.it/img/shop.png"></a></td>

<hr>
<br>
<table border="0" cellspacing="1" cellpadding="0" width="300" align="center" bgcolor="#cccccc"><tbody>
<tr><form action="checklogin.php" method="post"> <input name="phpMyAdmin" type="hidden" value="V0N0db6Fl62QWr6eBkly75xAGn3" /><td>
<table border="0" cellspacing="1" cellpadding="3" width="100%" bgcolor="#ffffff"><tbody>
<tr>
<td colspan="3"><strong>Login</strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input id="myusername" name="myusername" type="text" /></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input id="mypassword" name="mypassword" type="password" /></td>
</tr>
<tr>
<td></td>
<td></td>
<td><input name="Submit" type="submit" value="Login" /></td>
</tr>
</tbody></table>
</td>
</form></tr>
</tbody></table> 
</center>
</BODY>
</HTML>

Questo è il controllo per il login:
Codice:
<?php
session_start();
$_SESSION['myusername']=$_POST['myusername'];
$_SESSION['mypassword']=$_POST['mypassword'];

$host="localhost"; // Hostname
$username="root"; // Mysql username
$password=""; // Mysql password
$tbl_name="utenti"; // Nome della Tabella
$db_name="login"; //Nome del Database
// Procedimento per connettersi al Database
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// Nome utente e password inviate attraverso il form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
header("location:..//cod/login_success.php");
}
else {
echo "Attenzione username o password errati";
}
?>

Mentre questo è lo script che dovrei mettere per far in modo che la pagina venga visualizzata solamente dall'utente che ha eseguito l'accesso:
Codice:
<HTML>
<HEAD>
<TITLE>Login</TITLE>
</HEAD>
<BODY>
<center>
<br>   
          
    <td><a href="http://forum.mrwebmaster.it/index.php"><img src="http://forum.mrwebmaster.it/img/home.png"></a></td>
    <td><a href="http://forum.mrwebmaster.it/cod/reg.php"><img src="http://forum.mrwebmaster.it/img/registrati.png"></a></td>
    <td><a href="http://forum.mrwebmaster.it/cod/main_login.php"><img src="http://forum.mrwebmaster.it/img/login.png"></a></td>
    <td><a href="http://forum.mrwebmaster.it/cod/modwii.php"><img src="http://forum.mrwebmaster.it/img/modwii.png"></a></td>
    <td><a href="http://forum.mrwebmaster.it/cod/router.php"><img src="http://forum.mrwebmaster.it/img/router.png"></a></td>
    <td><a href="http://forum.mrwebmaster.it/cod/shop.php"><img src="http://forum.mrwebmaster.it/img/shop.png"></a></td>
<hr>
<br>

<?
session_start();
if($_SESSION['myusername'] = 'myusername'){
echo('Login successful');
}
?>

</center>
</BODY>
</HTML>

Grazie Mille Marco
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
puoi fare così
PHP:
<?php
//.......
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
	$_SESSION['user']=$myusername;//passi l'username in sessione
	header("location:..//cod/login_success.php");
}
else {
	echo "Attenzione username o password errati";//qui metterei l'header location alla (es.) index
}
?>
poi (tra l'altro come l'hai scritta, a meno che non manchi qualcosa, non mi sembra che così potrebbe funzionare)

PHP:
<?php
session_start();
if(!isset($_SESSION['user'])){//verifichi cche la sessione esista
	//non esiste
	$_SESSION=array();//eventualmete distruggi tutte le sessioni
	header("location:alla_pag_che_vuoi.php");//fai uscire
}else{
	//la sessione esite quindi fai vedere quello che vuoi
?>
<HTML>
<HEAD>
<TITLE>Login</TITLE>
</HEAD>
<BODY>
<!-- eccetera -->
<?php
}
?>
p.s.
poi per le pag php non usare il tag di formattazione code, ma quello suo PHP, ultima iconcina

p.s.
benvenuto nel forum
 

elricmarci

Nuovo Utente
2 Mar 2012
11
0
0
Adesso non mi resta che prendere questo script:
PHP:
<?php
session_start();
if(!isset($_SESSION['user'])){
    $_SESSION=array();
    header("location:/index/index.php");//fai uscire
}
?>
<HTML>
<HEAD>
<TITLE>Login</TITLE>
</HEAD>
<BODY>
?>

E inserirlo in ogni pagina che voglio far vedere solamente agli utenti loggati?

Grazie Mille Marco
 

elricmarci

Nuovo Utente
2 Mar 2012
11
0
0
Quindi in pratica facendo una cosa del genere dovrebbe andare??

PHP:
<html>
    <head>
            <title>Config Router</title>
    </head>
<body>
<center>
<br>             
    <td><a href="../index.php"><img src="../img/home.png"></a></td>
    <td><a href="../cod/reg.php"><img src="../img/registrati.png"></a></td>
    <td><a href="../cod/main_login.php"><img src="../img/login.png"></a></td>
    <td><a href="../cod/modwii.php"><img src="../img/modwii.png"></a></td>
    <td><a href="../cod/router.php"><img src="../img/router.png"></a></td>
    <td><a href="../cod/shop.php"><img src="../img/shop.png"></a></td>
<hr>
<br>

<?php
session_start();
if(!isset($_SESSION['user'])){
    $_SESSION=array();

}
?>
</center>
</body>
</html>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
no
per svariati motivi
1. session_start() deve essere alla prima riga, prima di qualsiasi output html, salvo modificare con le apposite istruzioni il flusso
2. ammesso (ma non concesso) che non ti dia l'errore di cui sopra la parte html, essendo fuori dall'if/else viene comunque vista
3. sempre ammesso... distruggi la sessione e poi? cosa fai rimani nella pagina?
l'uso della verifica della sessione serve proprio per verificare che l'utente si sia giustamente loggato, altrimenti un pinco pallo qualsiasi può entrare e vedere le pagine riservate.

poi precedentemente dimenticavo
quando leggi i post delluser e pass come minimo devi proteggerli con addslashes($_POST['pinco']) visto che accedi al db
poi la password è sempre meglio codificarla almeno con sha1
 

elricmarci

Nuovo Utente
2 Mar 2012
11
0
0
Borgo prima di tutto ti ringrazione per l'aiuto che mi stai dando.

"sempre ammesso... distruggi la sessione e poi? cosa fai rimani nella pagina?"

Volevo proprio sapere come far a rimaner collegato fino a quando non gli dò il logout distruggendo la sessione.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
cosa intendi con
Volevo proprio sapere come far a rimaner collegato fino a quando non gli dò il logout distruggendo la sessione.

il principio è questo:
hai una serie (o una) di pagine pubbliche accessibili a tutti, quindi navigabili indipendentemente dall'esistenza o meno della sessione
e una serie (o una) di pagine riservate accessibili solo se la sessione esiste
per accedere alla pagine riservate devi loggarti, quindi devi avere user e pass
per loggarti devi avere una pag di log (chiamiamola log.php, che fantasia) in cui c'è un form in cui devi inserire te o l'utente user e pass
log.php verifica nel db che user e pass esistano e che siano congrue

caso SI
si crea la sessione e puoi accedere e navigare tra le riservate o se vuoi tornare alle pubbliche
caso NO
la sessione NON si crea e vieni rinviato ad una delle pagine pubbliche a tuo piacere continuando comunque a navigare tra le pubbliche, può essere (es.) rinviato alla index o alla pag in cui può iscriversi

se nelle riservate non si mette la verifica della sessione e il riendirizzamento non esiste, un pinco pallo qualsiasi può accedere alle pag riservate semplicemente digitando
http: // www. tuo_sito . it/riservata_due.php
o riservata_uno... e poi navigare tra le riservate facendo quello che vuole
 

elricmarci

Nuovo Utente
2 Mar 2012
11
0
0
Come funziona una sessione e cosa fà lo sò...Il problema è tradurlo in php e fare in modo che funzioni sul mio sito.
 
Discussioni simili
Autore Titolo Forum Risposte Data
MarcoGrazia [PDO][PHP[MySQL] Piccolo modulo di ricerca in un sito tramite l'operatore LIKE Snippet PHP 1
Devil-94 gestione logo e titolo del sito con php e mysql MySQL 2
D [RISOLTO]domande varie su creazione sito con php, mysql e phpmyadmin PHP 42
M Semplice sito php/mysql...è veramente semplice ? PHP 5
B Sito php+mysql da web ad applicazione PHP 3
G progetto per sito in php con database mysql MySQL 0
G Progetto Sito Web con Php e Mysql PHP 0
A Sito php e mysql PHP 1
P Codifica caratteri speciali mysql php PHP 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Ricreare struttura php+mysql su Xampp Apache 0
M Array associativi php su 2 campi mysql PHP 10
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
Z MySql injection PHP PHP 1
D problema php mysql PHP 1
D problema php mysql PHP 1
L Google chart php mysql PHP 2
L Aiuto per programma web php/mySQL PHP 2
S Problemi delle funzioni eliminate con PHP e MySQL PHP 4
C Aiuto compiuto scuola PHP/MySQL PHP 2
G Problema caricamento tabelle MySql da PhP PHP 0
L update tabelle in php mysql [risolto] PHP 6
F Passare una variabile php dal DB mysql alla pagina PHP 3
B Fare calcoli con php da tabella mysql PHP 2
D [MySQL] [PHP] SQL andare da capo MySQL 0
P [OFFRO] Realizzazione siti web in PHP/MYSQL, responsive e Ottimizzati SEO Offerte e Richieste di Lavoro e/o Collaborazione 0
Tommy03 Firebase o PHP+Mysql? Sviluppo app per Android 0
pjtertdj Visualizzazione dati in php da mysql con funzione matematica in javascript PHP 1
E Cerco programmatore PHP/Mysql - retribuito Offerte e Richieste di Lavoro e/o Collaborazione 0
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
Z Gestionale in Php/mysql: Quanto farsi pagare? Aiuto! Discussioni Varie 0
E Inserimento dati da PHP in tabella MySQL PHP 5
R radio input php mysql PHP 2
E Caricare dati da DB MySql all'apertura pagina, meglio PHP o Javascript? PHP 1
giusebos [retribuito] Cercasi programmatore PHP/MySql Offerte e Richieste di Lavoro e/o Collaborazione 1
N Apache + MySQL + PHP MacOs Mojave Web Server 0
T PHP+MYSQL: problema con quelle maledette lettere accentate... PHP 5
K [PHP + MYSQL ] Inserimento dati in database da form dinamico PHP 13
M [PHP] Metodo migliore per fare login a un DB Mysql PHP 1
gandalf1959 problema con la codifica caratteri accentati e speciali tra php e mysql PHP 3
webmachine [PHP][MYSQL] Problema con le SELECT PHP 5
V Creare tabella mysql con php non funziona PHP 1
W Area riservata sicura PHP MySQL PHP 12
G php salvare file in campo blob mysql: massimo 4MB PHP 1
xone [Vendo] Gestionale Magazzino PHP-MYSQL Altri Annunci 0
M Stampare con php e mysql PHP 8

Discussioni simili