Visualizzazione dei risultati da 1 a 9 su 9

Discussione: problema con sessione

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    48

    problema con sessione

    Ciao a tutti! Ho un problema da risolvere al più presto, se qualcuno mi può aiutare gli sarei veramente grato.
    Ho un sito composto da più pagine e in ognuna a sinistra c'è un box con la login. Quando l'utente inserisce nome utente e password corrette la pagina deve essere ricaricata,ma il box deve scomparire.
    In locale funziona,ma se la metto online non funziona. Posto il codice di una delle pagine (solo la parte del box di inserimento) e della pagina di controllo:

    index.php:

    Codice PHP:
    <?php
    session_start
    ();
    ?>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    </head>
    <body>
        <?php
        
    if(empty($_SESSION['user']))
        {
        
    ?>
                <form action="controllo.php" enctype="multipart/form-data" method="post">
                <input type="hidden" name="pagina" value="index.php"/>
                <table width="180" border="0" align="center" cellpadding="0" cellspacing="0">
                  <tr>
                    <td height="28" align="left" valign="top" class="bianco10">[b]Username[/b]</td>
                    <td align="right" valign="top"><input name="username" type="text" class="testo" id="username" size="12" /></td>
                  </tr>
                  <tr>
                    <td height="28" align="left" valign="top" class="bianco10">[b]Password[/b]</td>
                    <td align="right" valign="top"><input name="password" type="password" class="testo" id="password" size="12" /></td>
                  </tr>
                  <tr>
                    <td class="bianco10"></td>
                    <td align="right"><input name="Submit" type="submit" class="testo" value="login" /></td>
                  </tr>
                  <?php
                
    if(isset($_REQUEST['errore2'])){
                
    ?>
                <tr><tr><td></td></tr><tr><td></td></tr>
                    <td bgcolor="green" colspan="2"height="28" align="center" class="bianco10">[b]Inserire username e password![/b]</td>
                  </tr>
                  <?php
                  
    }
                  if(isset(
    $_REQUEST['errore1'])){
                  
    ?>
                  <tr><tr><td></td></tr><tr><td></td></tr>
                  <tr>
                    <td bgcolor="green" colspan="2"height="28" align="center" class="bianco10">[b]Username o password errate![/b]</td>
                  </tr>
                  <?php
                  
    }
                  
    ?>
                </table>
                </form>
                
              
    </td>
          </tr>
          <tr>
            <td height="59">[url="richiedipassword_it.php"][img]images/box_catalogo2_it.gif[/img][/url]</td>
          </tr>
        </table>
        <?php
        
    }
        
    ?>
        </body>
    </html>
    controllo.php

    Codice PHP:
    <?php
    session_start
    ();
    $pagina=$_REQUEST['pagina'];
    if(isset(
    $_REQUEST['username'])AND($_REQUEST['password']))
    {
        if((
    $_REQUEST['username']=='admin')AND($_REQUEST['password']=='admin'))
        {
            
    $_SESSION['user']=$_REQUEST['username'];
            
    header("Refresh: 0;URL=".$pagina);
        }
        else{
         
    header("Refresh: 0;URL=$pagina?errore1");
         }
    }
    else{
        
    header("Refresh: 0;URL=$pagina?errore2");
    }
    ?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    48
    up

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    prova a cambiare $_REQUEST in $_POST

  4. #4
    Innanzitutto ho i miei dubbi sulla sintassi della tua pagina index.php. Mi spiego:

    <?php
    if(empty($_SESSION['user']))
    {
    ?>
    <form action="controllo.php" enctype="multipart/form-data" method="post">
    <input type="hidden" name="pagina" value="index.php"/>
    <table width="180" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
    .........



    Così come hai scritto il form viene visualizzato a video indipendentemente dal fatto ke l'if ti ritorni vero o falso.

    Per visualizzare la form solo se l'if ha dato esito positivo, dovresti fare:

    <?php
    if(empty($_SESSION['user']))
    {
    echo "<form action=\"controllo.php\" enctype=\"multipart/form-data\" method=\"post\">";
    echo "<input type=\"hidden\" name=\"pagina\" value=\"index.php\"/>";
    ............
    ?>



    Quindi riformula il tutto così poi vedi cosa funziona e cosa no.

  5. #5
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    io la farei così...

    premetto che se uno invia dal form delle variabili, che siano piene o vuote sono sempre settate....

    Codice PHP:
    <?php
    session_start
    ();
    $pagina=$_REQUEST['pagina'];

    if(!empty(
    $_REQUEST['username']) && !empty($_REQUEST['password']))
      {
      if(
    $_REQUEST['username']=='admin' && $_REQUEST['password']=='admin')
        {
        
    $_SESSION['user']=$_REQUEST['username'];
        
    header("Refresh: 0;URL=".$pagina);
        }
      else
        {
        
    // in header non si possono passare variabili
        //header("Refresh: 0;URL=$pagina?"); 
        
    $_GET['errore1']="";
        include(
    $pagina);
        }
      }
    else
      {
      
    // in header non si possono passare variabili
      //header("Refresh: 0;URL=$pagina?errore2"); 
      
    $_GET['errore2']="";
      include(
    $pagina);
      }
    ?>

    // e nella pagina di controllo errore

    <?php

    if (isset($_GET['errore2'])) //isset = se la variabile esiste, indipendentemente dal suo contenuto
      
    {
      
    //codice
      
    }
    else
      {
      
    //codice
      
    }
    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  6. #6
    Così come hai scritto il form viene visualizzato a video indipendentemente dal fatto ke l'if ti ritorni vero o falso.
    E' un metodo non molto consono ma funziona ugualmente

  7. #7
    Ah, OK grazie. Non si smette mai d'imparare!

  8. #8
    Scusa, una curiosità: ma perché ti vai ad impelegare così tanto?

    Io farei una cosa più semplice. Farei una pagina pubblica aperta a tutti cioè index.php e delle pagine "riservate" in cui vi è sulla sinistra un menù delle funzioni accessibile dall'utente loggato.

    Nella pagina index. non aprirei la sessione. Al centro metterei una pagina pubblica per il sito e a sinistra un form per il log-in con campo action ad es. = "area_ris.php"

    Dopo di che in area_ris.php, qui si che farei iniziare la sessione in cui inserisco i dati del log-in dopo averli validati e me li porterei dietro nelle pagine "riservate".

  9. #9
    Ah, OK grazie. Non si smette mai d'imparare!
    Di niente

    Il problema è che funziona solo se si usano le parentesi graffe...
    codice:
    <?php
    if($a != $b)
    {
    ?>
    <html>
    ecc ecc
    <?php
    }
    ?>

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.