Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654

    Variabili di sessione che impediscono l'apertura della pagina

    All'inizio di ogni pagina faccio un controllo sulle variabili di sessione, per impedire che possa essere raggiunta semplicemente digitando l'indirizzo sul browser. Mostro tutto il codice "incriminato".

    Codice PHP:
    <?php
    session_start
    ();
    include(
    "../config.php"); //connessione al database
    include ("controllo.php"); 
    ?>
    Dove "controllo.php" contiene:

    Codice PHP:
    <?php
      $controllo
    ="SELECT * FROM Segreteria WHERE Segreteria_Login='{$_SESSION['login']}'";
      
    $controllo_query mysql_query($controllo) or die(mysql_error());
      
    $num=mysql_num_rows($controllo_query);
      if(
    $num==0){
        
    header("Location: ../index.php");
      }
    ?>
    Funziona su gran parte delle pagine, ma su alcune mi impedisce di entrare e rimanda direttamente alla pagina di login. Questo problema mi si è presentato in altre maschere e ho dovuto togliere la protezione... avete idea di come possa sistemarle?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    nelle pagine incriminate togli il redirect e stampa query e risultati per fare un po' di debug...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Prima due consigli:

    Metti la connessione al db DOPO il check di sessione.
    Nel check controlla sempre (prima della query) che la variabile di sessione sia settata.

    Poi...non capisco quelle parentesi graffe. Forse è un metodo che non ho mai usato...a cosa servono?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    Allora, stampando la query mi viene fuori la scritta "Resource id #6" sopra la pagina. Non so neanche perchè mi stampi questa cosa
    Questo è il nuovo codice:

    Codice PHP:
    <?php
    session_start
    ();
    include(
    "../config.php");
    $controllo="SELECT * FROM Segreteria WHERE Segreteria_Login='{$_SESSION['login']}'";
      
    $controllo_query mysql_query($controllo) or die(mysql_error());
      echo 
    $controllo_query;
      
    $num=mysql_num_rows($controllo_query);
    ?>

    Prima due consigli:
    Metti la connessione al db DOPO il check di sessione.
    Nel check controlla sempre (prima della query) che la variabile di sessione sia settata.
    Poi...non capisco quelle parentesi graffe. Forse è un metodo che non ho mai usato...a cosa servono?
    La connessione mi serve proprio per il controllo, quindi non posso privarmene
    Se tolgo le parentesi graffe non viene presa, neanch'io so di preciso il perchè (evidentemente deve essere contenuta in qualche modo)
    La variabile di sessione comunque è definita

  5. #5
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Che stupido...hai ragione! Senza connessione niente SELECT

    cmq prova cosi:
    Codice PHP:
    <?php
    session_start
    ();
    include(
    "../config.php");
    $controllo="SELECT * FROM Segreteria WHERE Segreteria_Login='".$_SESSION['login']."'";
      
    $controllo_query mysql_query($controllo) or die(mysql_error());
      echo 
    $controllo;
      
    $num=mysql_num_rows($controllo_query);
    ?>

  6. #6

    ..............

    Ciao.
    Poi...non capisco quelle parentesi graffe. Forse è un metodo che non ho mai usato...a cosa servono?
    Complex (curly) syntax



    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  7. #7
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220

    Re: ..............

    Originariamente inviato da whisher
    Ciao.


    Complex (curly) syntax



    Molto interessante! Grazie Whisher

    Alla luce di questo posso ribadire che in questo caso è totalmente inutile

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    Quindi le graffe si usano solo su espressioni complesse...
    comunque neanche togliendole riesco ad accedere

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Per stampare la query intendevo:
    codice:
    echo ($controllo);
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    Originariamente inviato da Horus-Ra
    Quindi le graffe si usano solo su espressioni complesse...
    comunque neanche togliendole riesco ad accedere
    le graffe ti permettono di usare le apici nell'indice associativo in modo da uniformare la scrittura ed evidenziare per bene la sintassi. E' uno dei modi per gestire stringhe. E' inutile come potrebbe essere inutile usare la notazione di concatenazione. De gustibus.....

    sbagli comunque ad usare in quel modo $_SESSION senza verificare prima se e' valorizzato oppure no. Se non lo fosse sarebbe inutile fare la query e riceveresti un NOTICE che e' pur sempre un errore di programmazione. Anche qui "de gustibus.... "

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.