2016-04-26 41 views
7

La seguente dichiarazione non sembra funzionare. Neanche io ricevo alcun messaggio di errore.Posizione Header non funziona in Php

header("Location: /home/shaliu/Projects/Nominatim/website/search.php?q="+$query); 

Sto utilizzando file_put_contents() nel file search.php.

C'è un modo per capire cosa potrebbe essere sbagliato?

+0

dovresti usare il pieno non un URI relativo nella posizione dell'intestazione –

+2

dovresti anche assicurarti che nient'altro sia stato "echo'd sullo schermo prima di effettuare la chiamata a' header' –

+0

@ windrunn3r.1990 lui sarebbe \ dovrebbe ottenere un messaggio di errore se fosse il caso –

risposta

12

cambiamento questo:

+$query 

a questo:

.$query 

Perché:

+ è l'operatore di concatenazione per JavaScript, dove, come . è l'argomento di concatenazione per php

Inoltre, il percorso che si sta inviando sembra non essere corretto. I parametri all'interno della funzione di intestazione deve essere un indirizzo web completo, ad esempio iniziando con http:

header('Location: http://www.example.com/'); 

Mentre la risposta utilizza un percorso di file locale: "Location: /home/shaliu/Projects/Nominatim...".

+2

è davvero utile per spiegare il codice, non solo per dire "fai questo" –

+0

@Dagon è d'accordo, buona modifica – Webeng

+0

Non funziona –

0

si può provare this.I speranza che aiuterà

header('Location: http://www.example.com/search.php?q='.$query); 
0

header() viene utilizzato per inviare intestazioni HTTP (http://php.net/manual/en/function.header.php). Sembra che tu stia cercando di accedere a un file php utilizzando un percorso file locale e non un indirizzo http (web). "/home/shaliu/Projects/Nominatim/website/search.php" deve essere accessibile dal web e quell'indirizzo web è quello che deve essere usato nell'header() (vedi la risposta di @ Purushotham).

2

Prova:

È possibile utilizzare:

header("Location: http://www.example.com/search.php?q=".$query); exit();

O se il file è in search.php directory principale:

header("Location: /search.php?q=".$query); exit();

Essa può aiutare.

0

header("Location:https://www.example.com/search.php?q='<?php echo $get_id; ?>'");

Si prega di provare questo codice php. se si utilizza l'intestazione in php prima intestazione e posizione quindi il punto interrogativo la tua ricerca ottenere id.

1

put error_reporting (E_ALL);

utilizzare percorso relativo.

cambiamento questo con

header("Location: /home/shaliu/Projects/Nominatim/website/search.php?q="+$query); 

in PHP per l'utilizzo di concatenazione " "" +" viene utilizzato in javascript non in php

header("Location: /home/shaliu/Projects/Nominatim/website/search.php?q=".$query); 

Fate Il tuo percorso è corretto per il file

0

Se si utilizza

/home/shaliu/Projects/Nominatim/website/search.php 

In questo caso la posizione è a partire da/che significa cartella home (directory) dovrebbe essere all'interno della cartella principale del server. Ad esempio come server locale se consideriamo XAMPP allora la cartella home dovrebbe essere all'interno di C: \ xampp \ htdocs (in generale) e se consideriamo WAMP, la cartella home dovrebbe essere nella cartella www.

Se la cartella principale si trova all'interno della cartella in cui la pagina corrente è, allora dovreste usare

home/shaliu/Projects/Nominatim/website/search.php 

No/(barra richiesto).

Per seconda cosa è necessario sostituire + by. per concatenare la stringa.

Così, se la cartella principale è all'interno directory principale del server che allora si dovrebbe andare con

header("Location: /home/shaliu/Projects/Nominatim/website/search.php?q=".$query); 

In caso contrario, si dovrebbe andare con

header("Location: home/shaliu/Projects/Nominatim/website/search.php?q=".$query); 
0

Prova questo codice con un test "se il file esiste ":

if(is_file("/home/shaliu/Projects/Nominatim/website/search.php")) { header("Location: /home/shaliu/Projects/Nominatim/website/search.php?q=".$query); } else { echo "Error!"; }

Ricorda: in PHP per l'utilizzo di concatenazione . (Parmar @shivani)

Ricordate: se il header è chiamato dopo un elemento HTML, PHP restituisce l'errore!

1

Dopo aver fissato + a ., come detto in precedenza da @Webeng.

Se stai visitando la tua pagina digitando /home/shaliu/Projects/Nominatim/website/index.php nel tuo browser, le intestazioni non funzioneranno affatto, perché non sei nel contesto web, ma nel contesto di visualizzazione file locale.

Se si sta visitando tramite http://localhost/Nominatim/index.php, si sarà nel contesto Web, ma l'intestazione non funzionerà, perché si sta tecnicamente inviando il reindirizzamento al percorso di http://localhost/home/shaliu/Projects/Nominatim/website/search.php, che probabilmente non esiste in questa posizione. Invece di quello dovresti cambiarlo in: /search.php se la tua cartella website/ è collegata a http://localhost/ o qualcosa di adeguato, dipende dalla tua configurazione di ambiente.

0

è necessario sostituire più (+ ) dal punto (.) per concatenare la stringa.

Prova questo.

header('Location: http://www.example.com/search.php?q='.$query); 
0

A parte il problema di concatenazione ovvio che è già stato sottolineato, sembra che questo percorso è un percorso /home/shaliu/Projects/Nominatim/website/search.php*NIX; dato il modello /home/<user> inizia con.

Se questo è il caso, e si sta tentando di aprire un file al di fuori della radice del server Web in questo modo, il tuo è probabilmente un problema di autorizzazione. Lo spostamento di search.php in una posizione accessibile per il processo del server Web e l'esecuzione di chmod/chown nel file in cui si sta tentando di aprire il processo del server Web potrebbe risolvere il problema. Inoltre, potrebbe essere necessario specificare quale sistema operativo si sta utilizzando nel caso in cui sia necessario eseguire anche chcon.

Oh, avrei fatto un commento, ma sembra che non abbia il rappresentante necessario per aggiungere commenti.