Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    77

    Problema sessioni - reindirizzamento php

    Ciao a tutti, ho apprena trasferito un sito scritto in php da un dominio gratis ad un dominio .it preso da one.com Prima il sito funzionava correttamente mentre qui ho 2 problemi: Non funziona la funzione header. Ho provato a sostituirla con una funzione javascript, in quel caso funziona ma ho problemi con l sessioni in quanto non riesco ad effettuare il login. Queste sono le pagine con la funzione in javascript, precedentemente c'era l'header ma non fa il reindirizzamento e non da nessun errore.

    La pagina error_login riceve i dati da un form della pagina login.php

    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <Title>Errore-login</Title>
    <meta name="author" content="Sainato Stefano">
    <meta name="keywords" content="Vendite">
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <link rel="stylesheet" type="text/css" href="style.css">
    <link rel="stylesheet" type="text/css" href="print.css" media="print">
    </head>
    <body class="login">
    <div id="login">
    <?php
    session_start
    ();
    if(isset(
    $_SESSION['loggedin'])){
    header('location: default.php');
    $loggedin=$_SESSION['loggedin'];
    }
    require 
    'connessione.php'
    if(!isset($_REQUEST["nomeutente"]) || !isset($_REQUEST["password"])){
    echo
    "<p>Non hai inserito tutti i dati richiesti. Ritorna al <a href=\"login.php\">login.</a></p>";
    }
    else if(empty(
    $_REQUEST["nomeutente"]) || empty($_REQUEST["password"])){
    echo
    "<p>Non hai inserito tutti i dati richiesti. Ritorna al <a href=\"login.php\">login.</a></p>";
    }
    else{
    $user=trim($_REQUEST["nomeutente"]);
    $pass=trim($_REQUEST["password"]);
    $user=mysqli_real_escape_string($con,$user);
    $pass=mysqli_real_escape_string($con,$pass);
    $query "SELECT NomeUtente, Nome FROM Usr WHERE nomeutente='$user' AND password='$pass'";
    $result mysqli_query ($con$query);
    if (! 
    $result){
    printf ("<p>errore - query fallita: %s<p>\n"mysqli_error($con));
    }
    else if (
    mysqli_num_rows($result)==0){
    printf("Nome utente e/o password non corretti.");
    }
    else{
    session_start();
    $row mysqli_fetch_assoc($result);
    $_SESSION['loggedin'] = $row['NomeUtente'];
    $_SESSION['nome'] = $row['Nome'];
    $scadenza=time() + 3600*24*15;
    setcookie("NomeUtente"$row['NomeUtente'], $scadenza);
    echo 
    '<script language="javascript">';
    echo 
    'self.location="index.php"';
    echo 
    '</script>';
    }
    }
    ?>
    </div>
    </body>
    </html>
    Se i dati sono corretti reindirizza alla pagina di index dove nell'header c'è un controllo che verifica la presenza di una sessione

    Codice PHP:
    <?php
    session_start
    ();
    if(isset(
    $_SESSION['loggedin'])){
        
    $loggedin=$_SESSION['loggedin'];
    }
    else{
        echo 
    '<script language="javascript">';
        echo 
    'self.location="login.php"';
        echo 
    '</script>';
    }

    ?>
    <div id="logo">
    <a id="title" href="index.php"><img src="Fiodor_store.png" alt="Sales Report" /></a>
    </div>
    <div id="utente"><p>Utente: <?php echo"$loggedin";?></p><p><a href="logout.php">Logout</a></p>
    </div>
    <ul id="menu">
        <li><a href="index.php">Home</a>
        <ul class="menu2">
        <li><a href="impostazioni.php">Opzioni</a></li>
        </ul></li>
        <li class="active"><a href="magazzino.php">Magazzino</a>
        <ul class="menu2">
        <li><a href="aggiornamento_magazzino.php">Aggiornamento</a></li>
        <li><a href="storico_magazzino.php">Storico</a></li>
        <li><a href="report_magazzino.php">Grafico uscite</a></li>
        </ul></li>
        <li class="active"><a href="prodotti.php">Prodotti</a>
        <ul class="menu2">
        <li><a href="inserimento_prodotti.php">Inserimento prodotti</a></li>
        <li><a href="esporta_prodotti.php">Esporta prodotti</a></li>
        </ul></li>
        <li class="active"><a href="vendite.php">Vendite</a>
        <ul class="menu2">
        <li><a href="inserimento_vendite.php">Inserimento vendite</a></li>
        <li><a href="vendite_giornaliere.php">Andamento vendite</a></li>
        </ul></li>
        <li><a href="pagamenti.php">Pagamenti</a>
        <ul class="menu2">
        <li><a href="inserimento_pagamenti.php">Inserimento pagamenti</a></li>
        <li><a href="centri_di_costo.php">Centri di costo</a></li>
        </ul></li>
        <li class="active"><a href="report.php">Report</a>
        <ul class="menu2">
        <li><a href="utile_ultimo_mese.php">Utile netto mensile</a></li>
        <li><a href="ricerca_report.php">Report personalizzati</a></li>
        </ul></li>
    </ul>
    Non trova la sessione e mi reindirizza al login. Sapete dirmi dove sbaglio? La cosa strana è che nel vecchio dominio funzionava perfettamente.... Grazie

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    La regola dice che gli header non possono mai trovarsi dopo l'output al browser, mentre tu ce li hai proprio lì.
    Nel vecchio server probabilmente funzionava lo stesso perché faceva output buffering.
    Quindi, senza bisogno di soluzioni drastiche, hai due possibilità: o sposti l'invio degli header nello script, oppure modifichi l'impostazione dell'output buffering su php.ini, sempre che il gestore di hosting te lo consenta (non ricordo qual è l'impostazione esatta)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.