Vai, izmantojot PHP, ir iespējams pāradresēt lietotāju uz citu lapu?
Pieņemsim, ka lietotājs dodas uz www.example.com/page.php
, un es gribu viņu pāradresēt uz www.example.com/index.php
, kā to izdarīt, neizmantojot metaatjaunināšanu? Vai tas ir iespējams?
Tas varētu pat pasargāt manas lapas no nesankcionētiem lietotājiem.
Izmantojiet `header()
funkciju, lai nosūtītu HTTP Location
galveni:
header('Location: '.$newURL);
Pretēji tam, ko daži domā, die()
nav nekāda sakara ar pāradresāciju. Izmantojiet to tikai tad, ja vēlaties veikt pāradresāciju, nevis normālu izpildi.
Faili example.php:
<?php
header('Location: static.html');
$fh = fopen('/tmp/track.txt', 'a');
fwrite($fh, $_SERVER['REMOTE_ADDR'] . ' ' . date('c') . "\n");
fclose($fh);
?>
Trīs izpildījumu rezultāts:
bart@hal9k:~> cat /tmp/track.txt
127.0.0.1 2009-04-21T09:50:02+02:00
127.0.0.1 2009-04-21T09:50:05+02:00
127.0.0.1 2009-04-21T09:50:08+02:00
Atsākšana — obligātais die()
/exit()
ir kāda pilsētas leģenda, kam nav nekāda sakara ar faktisko PHP. Tam nav nekāda sakara ar klienta "respektēšanu" `Location:`` galvenē. Rādītāja nosūtīšana neaptur PHP izpildi neatkarīgi no izmantotā klienta.
function Redirect($url, $permanent = false)
{
if (headers_sent() === false)
{
header('Location: ' . $url, true, ($permanent === true) ? 301 : 302);
}
exit();
}
Redirect('http://www.google.com/', false);
Neaizmirstiet die()/exit()!