Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - Rendere accessibili determinate pagine agli utenti registrati
Forum - PHP - Rendere accessibili determinate pagine agli utenti registrati

Avatar
Dedalpap (Normal User)
Newbie


Messaggi: 9
Iscritto: 30/03/2009

Segnala al moderatore
Postato alle 16:46
Lunedì, 20/04/2009
Cercando di rendere alcune pagine precluse agli utenti registrati utilizzo una semplice struttura if else, che mostra un messaggio di errore nel caso in cui la sessione atta a memorizzare il nome utente non esista. Il problema è che se in locale tutto va a dovere, in remoto mi ferma il codice avvertendomi che ci sono delle parentesi graffe 'unexpected'. Da cosa potrebbe essere provocato ?

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 17:09
Lunedì, 20/04/2009
anche a me dava questi problemi ma ho risolto utilizzando una condizione di verifica
criptando in md5 la password dell'utente e spedendola in GET

del tipo
aid = UserID
session = Pass in md5

http:\\www.blablalba.it\?act=home&aid=12&session=A51654GxGAss1564231

session sarrebbe la pass criptata
eseguendo una verifica sulla pagina incudendo un file

recupera l'id dal aid
esegue una query e recupera la password in base a quell'id dell'account
cripta la pass dal database
ed eseguo un match

se la pass criptata in GET corrisponde in quella appena criptata sulla pagina
l'utente ha il permesso di visualizzarla

spero di esserti stato di aiuto saluti :k:


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 19:29
Lunedì, 20/04/2009
Codice per favore...


Il mio blog: https://piero.dev
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 19:55
Lunedì, 20/04/2009
prova in questo modo


pagina aut.php
Codice sorgente - presumibilmente PHP

  1. <?
  2.  
  3. //Pagina AUT per verificare che l'utente sia regolarmente loggato
  4.  
  5. //nel file header.php ci sono i vari parametri di connessione al database
  6. include("header.php");
  7.  
  8. $aid = $_GET[aid];
  9. $session = $_GET[session];
  10.  
  11.  
  12. $sql = mysql_query("SELECT * FROM utenti WHERE id='$aid';");
  13.  
  14. $row = mysql_fetch_array($sql);
  15.  
  16. $pass = md5($row[password]);
  17.  
  18.  
  19. if($pass != $session) {
  20. echo "Permesso negato!"; exit(); }
  21.  
  22. ?>




pagina index.php

Codice sorgente - presumibilmente Plain Text

  1. <?
  2. include("aut.php");
  3.  
  4.  
  5. //il tuo sito
  6.  
  7. ?>



a quel punto basta includere il file aut.php
se la pass criptata non corrisponde alla sessione termina tutto il codice con un exit
bloccando tutto quello che viene dopo all'inclusione del file
mostrando il messaggio


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Dedalpap (Normal User)
Newbie


Messaggi: 9
Iscritto: 30/03/2009

Segnala al moderatore
Postato alle 20:01
Lunedì, 20/04/2009
il codice è abbastanza lungo, nel senso che la parte che può interessare sarà minima rispetto alla maggior parte del codice. Comunque si divide nel codice dell'index, al centro della quale richiamo una determinata pagina. Ecco a titolo d'esempio

Codice sorgente - presumibilmente HTML

  1. <?php session_start(); ?>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  6. <title>II Bts - Liceo Scientifico Matera</title>
  7. <link href="style.css" rel="stylesheet" type="text/css">
  8. </head>
  9. <body>
  10. <div id="container">
  11. <div id="logo">
  12. <a href="index.php"><img src="immagini/reinessance.jpg" alt="II Bts" title="II Bts" style="border: 1px solid #000000;"></a>
  13. </div>
  14. <div id="link">
  15. <a href="index.php" class="menu">Home</a> | <a href="index.php?page=foto" class="menu">Foto</a> | <a href="index.php?page=chat" class="menu">Chat</a> | <a href="index.php?page=compiti" class="menu">Compiti</a> | <a href="index.php?page=download" class="menu">Download</a>
  16. </div>
  17. <div id="dx">
  18. <div id="dxtop"></div>
  19. <div id="dxmiddle">
  20. <div class="contenuto">
  21. <?php
  22.         $x = "main";
  23.         if(isset($_GET['page'])){
  24.         $x = $_GET['page'];
  25.         if($x!=basename($x) || !preg_match("/^[A-Za-z0-9\-_]+$/",$x) || $x=="index" || !file_exists($x.".php"))
  26.         $x="errore";}
  27.         include($x . ".php");
  28. ?>
  29. </div>
  30. </div>
  31. <div id="dxdown"></div>
  32. </div>
  33. <div id="sx">
  34. <div class="contenuto">
  35. <?php  
  36.         list($giorno, $mese, $anno) = explode("/","10/06/2009");
  37.         $giorni = ((mktime (0,0,0,$mese,$giorno,$anno) - time())/86400);
  38.         echo "<br>Mancano <b>".ceil($giorni). "</b> interminabili giorni alla fine della scuola";
  39. ?>
  40. <br><br>
  41. <?php
  42.         if(isset($_SESSION['utente'])){
  43.         echo "<span>Benvenuto <b>" . $_SESSION['utente'] . "</b></span><br><br>";
  44.         echo "<a href='index.php?page=listautenti' class=\"menu\">Utenti</a> - ";
  45.         echo "<a href='index.php?page=finelog' class=\"menu\">Esci</a>";
  46.         }
  47.         else{  
  48.         ?>
  49.         <form action="index.php?page=logresult" method="post" style="font-size: 12px;">
  50.         Nickname:<br>   <input type="text" name="utente">
  51.         <br>
  52.         Password:<br>   <input type="password" name="pass">
  53.         <br>
  54.         <input type="submit" value="Loggati">
  55.         </form>
  56.         <?php  
  57.         echo "<a href='index.php?page=registrazione' class=\"menu\">Registrati</a>";
  58.         }
  59.         ?>
  60. <br><br>
  61. <?php
  62.         if(!isset($_SESSION['visite'])){
  63.         $n = file("testi/visite.txt");
  64.         $vis = fopen("testi/visite.txt", "w");
  65.         fwrite($vis, $n[0]+1);
  66.         fclose($vis);
  67.         $_SESSION['visite'] ="y";
  68.         }
  69.         $n = file("testi/visite.txt");
  70.         echo "<div style=\"text-align: center\">Dal 09/04 ci sono state<br> <b>$n[0]</b> visite</div>";
  71.         ?>
  72. <br><br>
  73. <a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01 Transitional" style="height:31px; width:88px; border: 0px;"></a>
  74. <a href="http://jigsaw.w3.org/css-validator/check/referer"><img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="CSS Valido!"></a>
  75. </div>
  76. </div>
  77. <div id="footer">
  78. II Bts Liceo Scientifico Matera - Webbomaster: <a href="mailto: a.cotrufo@email.it" class="menu">Alessandro Cotrufo</a>
  79. </div>
  80. </div>
  81. </body>
  82. </html>



e

Codice sorgente - presumibilmente Php

  1. <?php
  2. if(!isset($_SESSION['utente'])){
  3. echo "Fai il log-in";}
  4. else{
  5. ?>
  6. <div style="text-align: center;">
  7. <b class="titolo">Utenti</b>
  8. <br><br>
  9. <table border="1" align="center">
  10. <tr style="background-color: #0066cc;"><td>Nickname</td><td>E-mail</td><td>Nome reale</td></tr>
  11. <?
  12. include("config.inc.php");
  13.  
  14. $db = mysql_connect($db_host, $db_user, $db_password);
  15. if($db == FALSE)
  16. die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
  17.  
  18. mysql_select_db($db_name, $db)
  19. or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
  20.  
  21. $query = "SELECT utente, email, nome FROM utenti ORDER BY utente;";
  22.  
  23. $result = mysql_query($query, $db);
  24.  
  25. while ($row = mysql_fetch_array($result))
  26. {
  27.         $data = date("d-m-Y", $row['datanascita']);
  28.         echo "<tr style='font-size: 13px;'><td>$row[utente]</td><td><a href='mailto: $row[email]'>$row[email]</a></td><td>$row[nome]</td></tr>";
  29. }
  30. ?>
  31. </table>
  32. </div>
  33. <?php } ?>



$_SESSION['utente'] contiene il nome dell'utente se è stato effettuato il login

(Ringrazio chiunque si prenderà la briga di leggere tutto solo per aiutarmi :D)

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 11:05
Martedì, 21/04/2009
Scusa ma a questo punto non conviene di più utilizzare un coockie?
in questo modo risparmi molto tempo.


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Dedalpap (Normal User)
Newbie


Messaggi: 9
Iscritto: 30/03/2009

Segnala al moderatore
Postato alle 16:35
Martedì, 21/04/2009
Al di là di questo (non ho usato un cookie perché sono meno immediati), avete qualche idea del perchè non funzioni ?

PM Quote
Avatar
Xaratroom (Ex-Member)
Expert


Messaggi: 526
Iscritto: 03/04/2008

Segnala al moderatore
Postato alle 17:19
Mercoledì, 13/05/2009
Non ci hai postato l'errore (con la relativa riga e relativo file).
Ma io non mi preoccuperei tanto dell'erroruccio quanto dell'intera struttura dell'applicazione: un frappè di codice php/html dal sapore disgustoso.

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 21:33
Mercoledì, 13/05/2009
Testo quotato

Postato originariamente da Xaratroom:

Non ci hai postato l'errore (con la relativa riga e relativo file).
Ma io non mi preoccuperei tanto dell'erroruccio quanto dell'intera struttura dell'applicazione: un frappè di codice php/html dal sapore disgustoso.



lol quoto perfettamente :rotfl:


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote