Domanda Intestazione PHP (posizione: ...): forza la modifica dell'URL nella barra degli indirizzi


Attualmente sto lavorando su un sito mobile con autenticazione tramite sessioni PHP con un database. Ho una pagina di accesso con un modulo che va a server_login.php su submit. Il file php crea quindi alcuni dati di sessione (memorizza in $ _SESSION) e reindirizza l'utente alla pagina dell'indice:

header("location:../../index.php");

La nuova pagina Web (index.php) viene caricata correttamente; tuttavia, quando l'intestazione reindirizza la pagina, l'URL nella barra degli indirizzi non viene modificato; rimane a * http: //localhost/php/server/server_login.php* invece di http: //localhost/index.php e quindi tutte le mie altre risorse che fanno uso del pathing relativo non possono essere caricate. È come se la pagina web continuasse a pensare che risieda in / php / server anziché in /.

Stranamente, il mio altro uso dell'header ("location: ...") a logout.php funziona e reindirizza la pagina con successo con una modifica dell'URL.

Mi sono assicurato che non ci fossero uscite nel mio * server_login.php * prima del reindirizzamento dell'intestazione (sopra sono solo chiamate mysql da verificare) e ho usato anche ob_start () e ob_end_flush ().

Esistono metodi per forzare la modifica dell'URL nella barra degli indirizzi (e quindi, si spera, risolvere il problema relativo al percorso)? O sto facendo qualcosa di sbagliato?

P / S: sto usando jQuery Mobile.

EDIT: ecco il mio codice per il reindirizzamento che non cambia l'URL:

// some other stuff not shown


$sql = "SELECT * FROM $user_table WHERE email = '$myemail' AND password = '$mypassword'";
$login_result = mysql_query($sql, $connection);

$count = mysql_num_rows($login_result);

if ($count == 1) {

    // Successfully verified login information

    session_start();

    if (!isset($_SESSION['is_logged_in'])) {
        $_SESSION['is_logged_in'] = 1;
    }

    if (!isset($_SESSION['email'])) {
        $_SESSION['email'] = $myemail;
    }
    if (!isset($_SESSION['password'])) {
        $_SESSION['password'] = $mypassword;
    }

    // Register user's name and ID
    if ((!isset($_SESSION['name'])) && (!isset($_SESSION['user_id'])))  {
        $row = mysql_fetch_assoc($login_result);
        $_SESSION['name'] = $row['name'];
        $_SESSION['user_id'] = $row['user_id'];
    }

    header("Location: http://localhost:8080/meet2eat/index.php");

} else {
    // Not logged in. Redirect back to login page
    header("Location: http://localhost:8080/meet2eat/php/login.php?err=1");

}

44
2017-09-19 06:44


origine


risposte:


Prova a cambiare:

header("Location : blabla")
                ^
                |
           (whitespace)

A

header("Location: blabla")

57
2018-04-20 21:34



Bene, se il server invia un'intestazione di reindirizzamento corretta, il browser reindirizza e quindi "cambia l'URL". Potrebbe essere un problema di browser, quindi. Non so se ha qualcosa a che fare con esso, ma non si dovrebbe inviare un url relativo nell'intestazione della posizione ("HTTP / 1.1 richiede un URI assoluto come argomento per» Posizione: includendo lo schema, il nome host e il percorso assoluto, ma alcuni client accettano URI relativi. ", http://php.net/manual/en/function.header.php), e "posizione" deve essere in maiuscolo, come:

header('Location: http://myhost.com/mypage.php');

27
2017-09-19 06:53



Nel tuo elemento modulo aggiungi data-ajax="false". Ho avuto lo stesso problema con jquery mobile.


17
2018-05-03 03:32



Ho avuto lo stesso problema con la pubblicazione di un modulo. Quello che ho fatto è stato quello di spegnere i dati-ajax.


6
2018-02-26 02:05



Non usare nessuno spazio bianco. Ho avuto lo stesso problema. Quindi ho rimosso lo spazio bianco come:

header(location:index.php);

Quindi ha funzionato.


5
2018-02-28 18:41



potresti voler fare una pausa; dopo la tua posizione:

header("HTTP/1.1 301 Moved Permanently");
header('Location:  '.  $YourArrayName["YourURL"]  );
break;

3
2017-12-03 19:45



Sei sicuro che anche la pagina che stai reindirizzando non abbia un reindirizzamento all'interno se non vengono trovati dati di sessione? Questo potrebbe essere il tuo problema

Inoltre sì aggiungi sempre spazi bianchi come @Peter O suggerito.


1
2018-06-21 09:35