Php sezioni con password

Luca Verdecchia

Nuovo Utente
21 Gen 2013
24
0
0
Ciao a tutti
Mi servirebbe uno script php che protegga una pagina del sito mio, il problema è che non so come proteggere questa sezione con password, mi servirebbe uno script che quando il sito ti chiede login e password devi inserire le informazioni giuste o non ti fa entrare, ma non so il codice per far entrare i membri in questa sezione. Se mi potete dire e come inserire lo script ve ne sarei grato, grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se guardi nei vari post trovi diverse cose che ti possono interessare.
se non trovi e/o non va bene per te riposta.

comunque dovresti dire se l'accesso deve essere limitato ad una sola persona o a vari utenti che devono registrarsi, nel secondo caso dovresti avere anche qualche cognizione di database mysql
 

Luca Verdecchia

Nuovo Utente
21 Gen 2013
24
0
0
Gli utenti gli registro io cioè loro mi dicono che vogliono usare questo programma, sito e io li aggiungo cosi loro possono fare il login.
Sono andato a vedere in giro nel forum ma non mi sembra che ci sia nessun post che mi risolva il problema
Il sito è composto solo da 2 pagine.
Il login per il database, è il database.
Però il problema che adesso tutti possono entrare nel database anche senza inserire niente nei campi di nickname e password quindi mi servirebbe uno script che funzionasse.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
echo uno schema di come potresti fare
PHP:
<?php
ob_start();
session_start();
//dati di connessione al db
if(isset($_POST['log']){
	$user=htmlspecialchars($_POST['user']);
	$pass=htmlspecialchars($_POST['pass']);//la pass sarebbe bene codificarla e salvarla nel db come minimo con sha1
	$q=mysql_query"SELECT * FROM utenti WHERE user='$user' AND pass='$pass'");//messo nome tabella e campi a caso
	if(mysql_num_ros($q)>0){
		//l'utente è registrato è quindi può accedere
		$_SESSION['utente']=$user;
		header('Location: pagina_riservata.php');//o come chiami la pag riservata, importante è che sia .php
		exit();
	}else{
		if(isset($_SESSION){session_destroy();}
		header('Location: index.php');//o dove vuoi rimandare
		exit();
	}
}else{
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
</head>
<body>
<!-- eccetera eccetera-->
<form action="aa" method="post">
  <table width="80%"  border="0" cellspacing="0" cellpadding="2">
    <tr>
      <td width="15%">username</td>
      <td width="38%"><input name="user" type="text" id="user"></td>
      <td width="47%">&nbsp;</td>
    </tr>
    <tr>
      <td>password</td>
      <td><input name="pass" type="password" id="pass"></td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td><input name="log" type="submit" id="log" value="LOG"></td>
    </tr>
  </table>
</form>
<!-- eccetera eccetera-->
</body>
</html>
<?php
}
ob_end_flush();
?>
poi nella pag pagina_riservata.php (o comunque in tutte quelle che sono riservate)
PHP:
<?php
session_start();
if(!isset($_SESSION['utente'])){//la sessione NON esiste
	//accesso negato
	if(isset($_SESSION){session_destroy();}
		header('Location: index.php');//o dove vuoi rimandare
		exit();
}else{
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
</head>
<body>
ciao <?php echo $_SESSION['utente']; ?><br />
<!-- eccetera eccetera-->
</body>
</html>
<?php
}
?>
ho messo le classiche query per interrogare il db, ma appena ne sai di più passa alla classe PDO
è evidente che dovrai essere tu ad inserire nella tabella del db sia l'username e la password o manualmente tramite phpmyadmin o facendoti uno script php
 

Luca Verdecchia

Nuovo Utente
21 Gen 2013
24
0
0
Ciao,
scusa per la domanda molto stupida, ma dove inserisco il primo codice php?? devo creare un documento php e mettere quel codice li?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
dipende da come vuoi fare.
da come hai detto il sito è attualmente di due pagine. immagino che una sia la index.php e l'altra quella riservata, giusto?
puoi
1)
fai una pagina chiamata loggati.php con il primo codice, e nella index metti un link che punta alla loggati
HTML:
<a href="loggati.php">entra in riservata</a>
(nella loggati aggiungi un link esci se uno non vuole più loggarsi e tornare alla index)
2)
nella index.php aggiungi un testa PRIMA del <!DOCTYPE ...> tutta la prima parte php <?php ob_start();....}else{ ?>
dopo il <!DOCTYPE ...>...<body> metti tutto quello che hai nella tua attuale più il form <body>, dopo </html> metti la rimanente parte php

il tutto condito con un buon css per rendere graficamente la pagina

analogo discorso per la riservata
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa nella fretta mi sono dimenticato una )
PHP:
if(isset($_POST['log'])){
penso che sia quello
e anche qui
PHP:
if(isset($_SESSION)){session_destroy();}

p.s.
se ne trovi altri posta
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
"la fretta frece nascere i gattini ciechi":crying:
prima dimenticata una (
$q=mysql_query("SELECT * FROM utenti WHERE user='$user' AND pass='$pass'");
poi

NO: if(mysql_num_ros($q)>0){
MA: if(mysql_num_rows($q)>0){
 

Luca Verdecchia

Nuovo Utente
21 Gen 2013
24
0
0
Adesso come faccio ad inserire i nickname con password?? (scelgo io quale è nickname è passoword non gli utenti)
Adesso io ho fatto un altra pagina quindi in totale ne sono 3, potrei togliere la prima pagina cioè l'index?
Con l'ultima pagina che chiamerò database come faccio a inserire la protezione? cioè per entrare in quella pagina prima si deve fare il login, quando fai il login vai direttamente nel database
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Borgo, attento con i gattini, htmlspecialchars != mysql_real_escape_string, comunque propongo una soluzione alternativa con mysqli e più ordine :ilpirata:

PHP:
<?php
session_start(); 

function redirectTo($location){
        header('Location: '.$location);
        exit(); 
}

if(!empty($_SESSION['utente'])) redirectTo('pagina_riservata.php');

$mysqli = new mysqli('localhost','user','password','database');

if(isset($_POST['log'])){ 
    $user=$mysqli->real_escape_string($_POST['user']); 
    $pass=$mysqli->real_escape_string($_POST['pass']);
    $q=$mysqli->query("SELECT * FROM utenti WHERE user='$user' AND pass='$pass'") or die($mysqli->error);
    if($q->num_rows>0){ 
        $_SESSION['utente']=htmlspecialchars($user); 
        redirectTo('pagina_riservata.php');
    }else
        redirectTo('index.php');
}else{ 
?> 
<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<title>Documento senza titolo</title> 
</head> 
<body> 
<!-- eccetera eccetera--> 
<form action="index.php" method="post"> 
  <table width="80%"  border="0" cellspacing="0" cellpadding="2"> 
    <tr> 
      <td width="15%">username</td> 
      <td width="38%"><input name="user" type="text" id="user"></td> 
      <td width="47%">&nbsp;</td> 
    </tr> 
    <tr> 
      <td>password</td> 
      <td><input name="pass" type="password" id="pass"></td> 
      <td>&nbsp;</td> 
    </tr> 
    <tr> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
      <td><input name="log" type="submit" id="log" value="LOG"></td> 
    </tr> 
  </table> 
</form> 
<!-- eccetera eccetera--> 
</body> 
</html> 
<?php 
} 
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
potrei togliere la prima pagina cioè l'index?
penso che non ti convenga per diversi motivi
1) se non c'è una pagina chiamata index.php (o index.html e index.htm) non riesci a chiamare il sito con www.tuo_sito.it (o.com o....)
2) se non metti nella index il form per loggarsi nella index devi mettere un link alla pag col form di log per richiamarla
poi per non poter accedere alla pag riservata devi mettere in testa il codice
PHP:
<?php
session_start();
if(!isset($_SESSION['utente'])){//la sessione NON esiste
    //accesso negato
    if(isset($_SESSION){session_destroy();}
        header('Location: index.php');//o dove vuoi rimandare
        exit();
}
?>
<!-- eccetera cioè tutto quello che ti serve nella pagina parti in html e/o in php da quello che ho capito qualcosa che ha da fare col db -->
oppure
PHP:
<?php
session_start();
if(!isset($_SESSION['utente'])){//la sessione NON esiste
    //accesso negato
    if(isset($_SESSION){session_destroy();}
        header('Location: index.php');//o dove vuoi rimandare
        exit();
}else{
?>
<!-- eccetera cioè tutto quello che ti serve nella pagina parti in html e/o in php da quello che ho capito qualcosa che ha da fare col db -->
<?php
}
?>
poi ti posto come inserire user e password (ma in mysql non in msqli come gli amanti delle complicazioni)
 

Luca Verdecchia

Nuovo Utente
21 Gen 2013
24
0
0
premetto che il database lo hosto con altervista.. quindi serve sempre l'index? Se volete per agevolarvi possiamo discuterne su skype, skype: Thesgtlucaù

p.s= quando vado a modificare il codice php del database e inserisco uno dei 2 codici mi da sintax error alla linea 5
 
Ultima modifica:

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
premetto che il database lo hosto con altervista.. quindi serve sempre l'index? Se volete per agevolarvi possiamo discuterne su skype, skype: Thesgtlucaù

p.s= quando vado a modificare il codice php del database e inserisco uno dei 2 codici mi da sintax error alla linea 5
Devi chiudere la tonda dell'if

PHP:
if(isset($_SESSION)){//...

Anche se non ha molto senso, basta verificare che $_SESSION['utente'] non sia settato e basta
 

Luca Verdecchia

Nuovo Utente
21 Gen 2013
24
0
0
header('Location: index.php');//o dove vuoi rimandare

Su location devo inserire la pagina riservata cioè database o devo inserire la pagina normale che ci possono entrare tutti?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ti indico uno schema di come potresti fare la pagina per immettere username e password.
poi sarà da modificare dove viene verificato l'user e pass dell'utente in modo che
se user e pass di utente generico puo accedere solo alla riservata
se user e pass tue personali pouo accedere alla riservata e alla pag per inserire nuovi utenti
per ora ti conviene fare una pagina chiamata (es.) mia_pagina.php e richiamarla con
http://www.mio_sito.it/mia_pagina.php

PHP:
<?php
function genera_pass(){//genera una password (mi limito a numeri) casuale da 6 a 12 caratteri
	$lunga=rand(6,12);//genera una lunghezza casuale
	$pass="";
	for($k=0;$k<$lunga; $k++){
		$pass.=(string)rand(0,9);
	}
	return $pass;
}
//dati di connessione
if(isset($_POST['inserisci'])){
	$user=$_POST['user'];
	$pass=$_POST['pass'];
	//qui conviene verificare se l'user o la pass esistono di gia in modo da non avere doppioni
	//verifico l'user solamente
	$q=mysql_query("SELECT * FROM utenti WHERE user='$user'");
	if(mysql_num_rows($q) > 0){
		//l'username è già presente nel db quindi avviso
		echo "ATTENZIONE: l'username è gia presente, modificarlo<br />";
	}else{
		//l'username non esiste quindi inserisco nel db
		if(mysql_query("INSERT INTO utenti(user,pass) VALUES('$user', '$pass')")){
			echo "inserito $user e $pass<br />";
		}else{
			echo "c'è stato un errore, riprova<br />";
		}
	}
	//ritorno dopo 3 secondi (tempo per leggere avvisi) al form di immissione user e pass
	echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<table width="80%"  border="0" cellspacing="0" cellpadding="2">
  <tr>
    <td width="21%">inserisci username </td>
    <td width="53%"><input name="user" type="text" id="user"></td>
    <td width="26%">&nbsp;</td>
  </tr>
  <tr>
    <td>inserisci password </td>
	<!-- ti suggerisce una password che puoi accettare o meno -->
    <td><input name="pass" type="text" id="pass" value="<?php echo genera_pass(); ?>"></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td><input name="inserisci" type="submit" id="inserisci" value="inserisci"></td>
  </tr>
</table>
</form>

p.s.
if(isset($_SESSION)){//...
verifichi che ci siano delle sessioni, ma se da altre parti sono state settate delle sessioni che non c'entrano nulla? es. $_SESSION['pinco'] esiste ed è settata?
p.s. al p.s.
come gia detto la index serve
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Per il genera password potevi usare microtime + uniqid e poi utilizzare l'md5 per il database essendo più sicuro, comunque

PHP:
    $user=mysql_real_escape_string($_POST['user']); 
    $pass=mysql_real_escape_string($_POST['pass']);

rendi sempre sicuri quei poveri gattini


ps: proprio perché la sessione non è relativa a quella pagina potrebbe in teoria essere utile per altre pagine anche se non è questo il caso, comunque è sempre meglio utilizzare solo le sessioni che servono e desettare solo quelle con unset
 
Discussioni simili
Autore Titolo Forum Risposte Data
christiannnnnnnnn [PHP] Sparizione sezioni su browser PHP 3
T Sezioni di php PHP 2
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
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
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10

Discussioni simili