Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Problema con header

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    15

    Problema con header

    Salve a tutti sto facendo un po di pratica con php ed ho un piccolo problema non riesco a farmi reindirizzare sulla pagina index. vi espongo il codice. Un po ne capisco ma non sono un asso... Grazie per tutti quelli che mi daranno un aiuto! Ho fatto delle prove e i dati vengono salvati in db... poi ho fatto un vardump($utente_loggato) dentro "if" cercando di vedere se entrasse e che valore aveva ed è tutto giusto. Non so perchè non faccia quel reindirizzamento.

    codice:
    <?php
    session_start ();
    include ("connect_db.php");
    $sql = "INSERT INTO Login (Username,Password,Email)
            VALUES ('" . $_POST ["username_reg"] . "','" . $_POST ["password_reg"] . "','" . $_POST ["email_reg"] . "')";
    if ($_POST ["username_reg"] != "" && $_POST ["password_reg"] != "" && $_POST ["email_reg"] != "") {
        if (mysqli_query ( $connect_db, $sql )) {
            echo "Ti sei registrato correttamente.";
            $utente_loggato = true;
        } else {
            echo "Errore di inserimento";
        }
    } else {
        echo ("non hai compilato tutti i campi obbligatori!");
    }
    
    if($utente_loggato==true){
    header ( "Location:./index.php" );
    exit;
    }

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Dovresti anche dirci quale sia l'errore che ti si propone, aiuta non poco a trovare una soluzione.

    Così ad intuito direi che l'errore è "header already sent...".
    Se così fosse, il problema è che la funzione header() per funzionare non deve essere preceduta da nessun output, sia echo che direttamente codice html.

    Tu se la registrazione va a buon fine stampi "Ti sei registrato correttamente." che impedisce ad header() di funzionare.
    Togli quella riga.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    15
    Ciao grazie per l'aiuto...
    allora girovagando per stackover o visto che inseriscono un comando
    ob_start(); non so assolutamente a cosa servi ma sembra che funzioni.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Ma a che ti serve?
    Se togli quella riga funziona anche senza ob_start()?
    Tanto è inutile stampare quel messaggio, c'è il redirect immediato, l'utente neanche avrà il tempo di leggerlo.

  5. #5
    Quote Originariamente inviata da MiDDiO Visualizza il messaggio
    Ciao grazie per l'aiuto...
    allora girovagando per stackover o visto che inseriscono un comando
    ob_start(); non so assolutamente a cosa servi ma sembra che funzioni.
    Esiste un manuale per php, ed è anche abbastanza dettagliato. sviluppare copiando codice da stack overflow senza capire a cosa serve quel codice, non è il massimo.

    http://php.net/manual/en/ref.outcontrol.php

  6. #6
    Buon pomeriggio a tutti...
    Anche io praticando con PHP e con lo stesso problema di MiDDiO
    la funzione header() non funziona.

    L'errore nel file log è il seguente:


    [Thu May 18 16:09:10.598692 2017] [proxy_fcgi:error] [pid 23664] [client 95.17.221.195:50647] AH01071: Got error 'PHP message: PHP Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/vhosts/MYSITE.com/httpdocs/test/loadcountry.php:1) in /var/www/vhosts/MYSITE.com/httpdocs/test/loadcountry.php on line 3
    PHP message: PHP Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/vhosts/MYSITE.com/httpdocs/test/loadcountry.php:1) in /var/www/vhosts/MYSITE.com/httpdocs/test/loadcountry.php on line 3
    PHP message: PHP Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/MYSITE.com/httpdocs/test/loadcountry.php:1) in /var/www/vhosts/MYSITE.com/httpdocs/test/loadcountry.php on line 8\n', referer: http://MYSITE.com/test/

    e questo il codice della pagina loadcountry.php
    <?php
    session_start();
    $setcountry = $_POST["country"];
    $_SESSION["setcountry"] = $setcountry;
    $_SESSION["setcity"] == '';
    header("location: index.php");
    exit;
    ?>

    L'unico modo di eseguire il redirect è inserendo un comando html
    echo "<meta http-equiv=\"refresh\" content=\"0; url=index.php#form\" />";
    però in questo caso il valore delle variabili di sessione è null!!!!!


    Un saluto e un grazie a tutti

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Verifica che i tuoi file php siano salvati con la codifica UTF8 Senza BOM (alcuni editor lo chiamano ANSI as UTF8), UTF8 semplice non va bene perché applica un carattere non stampabile all'inizio di ogni file ed è interpretato come output, anche se non si vede.

  8. #8
    GURU!!!

    Ebbene si... era la codifica dei file sbagliata!!!!

    Risolto cambiando la codifica con notepad++

    Moltissime grazie!!!!!

Tag per questa discussione

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.