Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[PHP] Loghin e password multiutente

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

[PHP] Loghin e password multiutente

Postdi romand700 » 02/08/06 13:21

Fondamentalmente uno script che protegga una pagina con username e password non è un problema realizzarlo.
Ora invece il mio problema è creare delle pagine protette e ad ogni utente che si logga assegnare la sua rispettiva pagina con dentro i dati che saranno diversi per ogni pagina ad es. con:
user x
pass x
il suo accesso deve essere alla pagina x.php

mentre un utente con:
user y
pass y
deve avere il suo accesso alla pagina y.php
e cosi via

Ora sono giorni che sto provando ad adattare dei semplici script di login con singolo accesso a multiutente ma senza risultati.
Qualcuno sa dove potrei trovare uno script del genere o se magari mi potrebbe illuminare sulla procedura?

Grazie. Andrea
romand700
Utente Junior
 
Post: 77
Iscritto il: 06/07/06 22:36

Sponsor
 

Postdi Dylan666 » 02/08/06 14:00

ma parliamo di roba basata su un database o no?
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi romand700 » 02/08/06 14:55

Diciamo che non è un problema, vanno bene entrambi le soluzioni, anche se con database lo preferirei.
romand700
Utente Junior
 
Post: 77
Iscritto il: 06/07/06 22:36

Postdi Dylan666 » 02/08/06 15:05

Facciamo al contrario... posta il codice che tu hai preparato
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi romand700 » 02/08/06 15:22

Come area riservata ne ho una ed è l'unica che di solito uso per proteggere una singola pagina, però come detto è a singolo accesso e sono (compresa la pagina protetta) 4 file.
E poi ciò sbattuto per bene la testa e non credo ci sia verso di adattare lo script per un multiutente. Rischiamo che posto tutto il codice e poi non se ne può far nulla.

Purtroppo ho provato a cercare anche nella rete ma non è semplice trovarne di questo genere multiutente.
Postare il codice di quella che ho comporterebbe un lungho post.
La mia speranza era se qualcuno magari sapeva qualche fonte.

Grazie. Andrea
romand700
Utente Junior
 
Post: 77
Iscritto il: 06/07/06 22:36

Postdi Dylan666 » 02/08/06 15:26

Non posso che rimandarti a link generici:
http://php.html.it/script/lista/60/protezione-password/
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi romand700 » 02/08/06 15:45

Bhè ci proviamo, ho ridotto le pagine hai minimi termini.
Questi sono i codici delle singole pagine:
Pagina dove ci sono i campi loghin e password (LOGHIN.PHP):
Codice: Seleziona tutto
<? session_start(); ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<?
function check($user,$password){
      include("utenti.php");

      foreach($utenti as $user_ => $password_){
         if (($user==$user_) AND ($password==$password_)) {
            return true;
         }
      }

      return false;
}

function form_login(){
?>
<form id="login"  method="post">
<input type="text" name="utente" size="20" /></td>
<input type="password" name="password" size="20" /></td>
<input name="submit" type="submit" class="Stile2" value="   OK   " />            </td>
</form>
<? }

if(isset($_POST["utente"])){
   if (check($_POST["utente"],$_POST["password"])){
      $_SESSION["utente"] = $_POST["utente"];
      $_SESSION["password"] = $_POST["password"];
   echo'<meta HTTP-EQUIV="refresh" content=1;url=" URL della pagina protetta qui">';
    exit;
   }else{
      form_login();
   }
      
?>

</body>
</html>

Questo è il file area AREARISERVATA.PHP che controlla le sessioni:
Codice: Seleziona tutto
<?
session_start();

if(!isset($_SESSION["utente"])){
   include("login.php");
   die();
}

?>


Questa è la pagina UTENTI.PHP dove posso impostare quante pasword mi pare:
Codice: Seleziona tutto
<?


$utenti["admin"] = "pass";
$utenti["admin1"] = "pass1";
?>


E questa è la pagina protetta che l'utente loggato visualizza
Codice: Seleziona tutto
<? include("area_riservata.php"); ?>
<html>
<head>
      <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
</head>
<body>
Pagina con i contenuti protetti
</body>
</html>


Diaciamo che questo è lo script che uso di solito per proteggere una pagina, è stato preso proprio da HTML.IT e non necessita di database, ora però è capire se è possibile adattarlo per la funzione che ho descritto a inizio post.

Grazie.
romand700
Utente Junior
 
Post: 77
Iscritto il: 06/07/06 22:36

Postdi Dylan666 » 02/08/06 16:06

<? session_start(); ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<?
function check($user,$password){
include("utenti.php");

foreach($utenti as $user_ => $password_){
if (($user==$user_) AND ($password==$password_)) {
return true;

If ($user_ == nome_utente_A) { $secret_page = percorso/pagina_A.php }
If ($user_ == nome_utente_B) { $secret_page = percorso/pagina_B.php }

}
}

return false;
}

function form_login(){
?>
<form id="login" method="post">
<input type="text" name="utente" size="20" /></td>
<input type="password" name="password" size="20" /></td>
<input name="submit" type="submit" class="Stile2" value=" OK " /> </td>
</form>
<? }

if(isset($_POST["utente"])){
if (check($_POST["utente"],$_POST["password"])){
$_SESSION["utente"] = $_POST["utente"];
$_SESSION["password"] = $_POST["password"];
echo'<meta HTTP-EQUIV="refresh" content=1;url= $secret_page>';
exit;
}else{
form_login();
}

?>

</body>
</html>

Così rimandiamo a pagine statiche. Ovviamente se devi personalizzarne il contenuto devi agire sul contenuto da generare nel BODY della pagina protetta
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi romand700 » 02/08/06 16:27

Dylan666 ha scritto:
<? session_start(); ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<?
function check($user,$password){
include("utenti.php");

foreach($utenti as $user_ => $password_){
if (($user==$user_) AND ($password==$password_)) {
return true;

// Parse error: parse error in c:\programmi\easyphp1-8\www\login\login.php on line 15
If ($user_ == nome_utente_A) { $secret_page = percorso/pagina_A.php }
If ($user_ == nome_utente_B) { $secret_page = percorso/pagina_B.php }

}
}

return false;
}

function form_login(){
?>
<form id="login" method="post">
<input type="text" name="utente" size="20" /></td>
<input type="password" name="password" size="20" /></td>
<input name="submit" type="submit" class="Stile2" value=" OK " /> </td>
</form>
<? }

if(isset($_POST["utente"])){
if (check($_POST["utente"],$_POST["password"])){
$_SESSION["utente"] = $_POST["utente"];
$_SESSION["password"] = $_POST["password"];
echo'<meta HTTP-EQUIV="refresh" content=1;url= $secret_page>';
exit;
}else{
form_login();
}

?>

</body>
</html>

Così rimandiamo a pagine statiche. Ovviamente se devi personalizzarne il contenuto devi agire sul contenuto da generare nel BODY della pagina protetta


Grazie intanto per la celerità nel rispondere.
Credo che la strada sia proprio questa, però come ti ho annotato nel commento mi da l'errore al primo if.

Ma nome_utente_A lo devo lasciare proprio cosi come l'hai scritto te?
Andrea
romand700
Utente Junior
 
Post: 77
Iscritto il: 06/07/06 22:36

Postdi Dylan666 » 02/08/06 16:54

Ovviamente "nome_utente_A" e l'altro li devi sostituire con i nomi degli utenti registrati

Per quanto riguarda il codice mi devo essere scordato una manciata di virgolette :P
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi romand700 » 02/08/06 16:59

e sta manciata di virgolette dove le metto? :D
romand700
Utente Junior
 
Post: 77
Iscritto il: 06/07/06 22:36

Postdi Dylan666 » 02/08/06 18:21

devi mettere fra virgolette le cose dopo gli uguali
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi Triumph Of Steel » 02/08/06 19:54

nella pagina che l'utente loggato visualizza, al posto del testo nel body, potresti mettere

Codice: Seleziona tutto
<body>
<?php include("".$_SESSION['utente'].".php"); ?>
</body>

dovresti fare N pagine per quanti sono gli utenti...
se devi usare il database, allora nella tabella metti come campi

username
password
pagina

così non hai bisogno di chiamare la pagina come il nome utente, ma puoi chiamarla come vuoi..
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi Dylan666 » 02/08/06 19:56

Vero, molto meglio :D
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi romand700 » 02/08/06 20:17

Triumph Of Steel direi procedura ottimale, però stavo pensando anche una cosa che questo tipo di script mi può andar bene se sono pochi utenti, ma mettiamo una ipotesi che si arriva ad avere 500 o più registrati, quante righe di codice devo implementare ogni volta? forse misa che mi devo trovare uno script con database, non so se sei daccordo ma io la vedo cosi.

A proposito Triumph ti ricordi quel discorso di abilitare il pulssante invia del form? tu mi avevi mandato quel codice:
Codice: Seleziona tutto
function sendForm() {
   document.form_contatti.invia.disabled = true;
   document.form_contatti.submit();
}
ma questa è una funzione java, come faccio ad integrarla nello stralcio di codice php? a me mi serve che mi disabilita il tasto nel punto dove appare il link (email inviata con successo clicca qui per inviarne un'altra)

Grazie come sempre
romand700
Utente Junior
 
Post: 77
Iscritto il: 06/07/06 22:36

Postdi Dylan666 » 02/08/06 20:18

romand700 ha scritto:ma questa è una funzione java


Javascript, non java :P
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi romand700 » 02/08/06 20:28

ho abbreviato nello scrivere, il problema che nel php mi da errore.
romand700
Utente Junior
 
Post: 77
Iscritto il: 06/07/06 22:36

Postdi Triumph Of Steel » 02/08/06 23:15

fai un echo "<script>function ...</script>";

per quanto riguarda i tuio 500 utenti.. beh.. dipende dai contenuti per ogni utente...
potresti magari avere che dei 500 utenti, 100 vedono una cosa, 50 un'altra.. ecc.
in questo caso, il DB come ti ho detto va bene.. perchè per i 100 utenti dai come "pagina" la stessa..
non devi implementare nessuna riga di codice.. devi solo creare le pagine per gli utenti (tanto è la pagina dopo il login che si preoccupa di fare l'include).

Altra soluzione (nel caso di contenuti statici) è quella di pensare ad usare i template (smarty è una buona soluzione)

quello che non mi è chiaro, è se gli utenti vedono contenuti diversi, o vedono solo il layout diverso.

Nel primo caso, non saprei come fare, l'unica è creare tante pagine.
Secondo caso, i template, e al posto del campo "pagina" nel DB, metti "templateFolder".
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi romand700 » 02/08/06 23:43

allora l'echo poi lo provo. anche se mi sembra di aver provato cosi ma mi pare che non mi disattivava:
Codice: Seleziona tutto
echo "<script>function sendForm() {
   document.form_contatti.invia.disabled = true;
   document.form_contatti.submit();
} </script>";
Per gli utenti ti spiego:
Praticamente è la prima che hai detto ogni utente deve vedere una pagina con contenuti diversi, praticamente devo fare in modo che un utente Y loggandosi con user e pass Y entra a vedere la pagina Y.html/php, l'utente Z loggandosi con user e pass Z deve vedere la pagina Z.html/php e cosi via tutti gli altri, poi ovviamente le pagine che assegno ad ugni utente sono create da me con dentro i vari contenuti che potrebbero essere immagini prezzi report ecc...
Per farti capire un pò come una webmail che ogni persona digitando il suo user e la sua password entra nella sua casella di posta.

Sono 3 giorni che cerco uno script decente ma niente da fare.

Grazie. Spero in un tuo lampo di genio

http://forum.html.it/forum/showthread.p ... id=1003565
Leggiti questo post c'è tanto di codice sorgente, e credo sia quello che sto cercando io facendogli delle modifiche per le pagine in più c'è da creare il db e il file config. e non credo di riuscirci anche se ci sto provando.
Grazie ancora.
romand700
Utente Junior
 
Post: 77
Iscritto il: 06/07/06 22:36

Postdi romand700 » 02/08/06 23:46

opss non è neanche come hai detto te ma come ti ho specificato. Ogni utente deve avere una singola pagina private che vede solo lui.

Scusami per essermi ripetuto.
romand700
Utente Junior
 
Post: 77
Iscritto il: 06/07/06 22:36

Prossimo

Torna a Programmazione


Topic correlati a "[PHP] Loghin e password multiutente":


Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti