Tilbake til startsida IKT i praksis - PHP

Meny
 
 
 
PHP
Vidaresend
 
Pascal
 
Open Office
 

Send sidene vidare

Legg du om frå html til php vil søkemotorane bruke ein del tid på å finne dei nye sidene. Fjernar du html-sidene, vil lenkene til sidene ikkje virke. Søkemotoren kan ikkje vite at fila bare har skift namn frå fila_mi.html til fila_mi.php. Det vi treng er eit lite skript som sender php-fila til mottakaren når html-fila med same namnet blir kalla opp.

Bruke meta-tag

Ein enkel, men kanskje ikkje så kontrollerbar måte å vidaresende sida på er å setje inn ein vidaresendingskommando som meta-tag i html-kodinga:

<meta http-equiv="REFRESH" content="10;url=http://www.nytt-domene.no/ny-side.php">

Talet 10 framføre «url=» gjer at omdirigeringa skjer om 10 sekund. Dette kan du endre etter eige ønskje.

.htacess

Ligg sida di på ein Apache-servar, kan du kanskje omdirigere sida ved å legge kommandoen Redirect 301 /sida-mi.html http://www.domenet-mitt.no/nyside.php/ i fila .htacess. Dette gjer du ved å laste ned fila frå rotmappa for sidene dine på servaren og føye til linja der. Dersom fila ikkje finst frå før, legg du kommandoen i ei ny fil og lagrar denne i rotmappa, sjølvsagt med namnet .htacess.

Ønskjer du å omdirigere til eit anna domene, gjer du det ved å forandre
... http://www.domenet-mitt.no/nyside.php til
... http://www.nytt-domenet.no/nyside.php.

(Du har rett. «htacess» er feilskrive. Då feilen blei oppdaga, var fila alt så mykje brukt at dei som styrer med dette valde å la feilen vere feil).

PHP

Sidene mine ligg på Apacheservar, men der blir det brukt eit anna system slik at eg ikkje kan bruke metoden ovanfor. Litt søking på nettet, studering av handbøkene for php og litt sjølvtenking førte til eit overraskande enkelt program for denne jobben.

Ein metode for å omdirigere sida sida_mi.html til sida_mi.php er altså å lage eit php-skript med ønskt kode og lagre det som sida_mi.html. Skriptet kan sjå slik ut:

<?php
  header('http://www.minServer.no/sida_mi.php')
?>

Det er svært viktig at det ikkje må vere noe som helst form for utdata frå sida før oppkallet. Skriv du, kanskje av gammal vane

<html>
  <?php
    header('http://www.minServer.no/sida_mi.php')
  ?>
<body>
  ...
</body>
</html>
vil funksjonen ikkje fungere. <html> sender data ut frå sida.

Legg merke til at adressa må vere fullstendig, ikkje relativ i høve til sida ho blir kalla opp frå.

Relativ adresse

Er det ønskjeleg å bruke relativ adresse og samstundes automatisere skriptet kan dette gjerast med litt ekstra programmering. Studer skripteksemplet:

<?php
  $vert = $_SERVER['HTTP_HOST']; // Finn vertsnamnet (t.d. localhost)
  $adr = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); // Stig (t.d. /stuestoel.no/ikt)
  $filnamn = basename ( $_SERVER['PHP_SELF']); // Finn filnamnet (t.d. php-redirect.php)
  $funn = strristr($filnamn, '.'); // $funn = siste punktum og alt etter dette
  $filnamn = substr_replace($filnamn,'.php',$funn, 9); // Bytter ut ".html" med ".php"
  header("Location: http://$vert$adr/$filnamn"); // Kommandoen som utfører jobben
  exit;
?>

Dersom den nye sida har eit heilt anna namn enn sida skriptet blir brukt i, kan du erstatte linjene som definerer $filnamn og $funn med $filnamn = 'sidami.php'; (eller kva sida heiter).

Er du i tvil om kva som hamnar i dei ulike variablane, kan du skrive dei ut.

  $vert = $_SERVER['HTTP_HOST']; // Finn vertsnamnet
  print $vert . '<br>';

Resultatet av funksjonen header() kan du sjå ved å erstatte funksjonskallet header med print. Altså
print ("Location: http://$vert$adr/$filnamn");

Slik skriptet er sett opp, vil det bytte ut kva filutviding («.html», «.htm», «css» o.l.) som helst med «.php». Inneheld fila fleire punktum, vil alt etter siste punktum bli bytt ut med «.php».

Kommandoen exit; er i dette eksempelet ikkje nødvendig, men er tatt med i tilfelle sidene dine inneheld fleire koder etter dei som er nemnde ovanfor. Kommandoen gjer at php hoppar ut av programmet der kommandoen er sett, utan å lese vidare nedover sida.

Sidan dette skriptet bare blir brukt på bestemte sider, er det ikkje lagt inn kontroll av variablane. F. eks. reknar eg med at sida du legg inn skriptet på, inneheld punktum. Lite vits elles i å bruke skriptet.

Eit anna eksempel

Har du sett «Sida vil bli omdirigert om 10 sekund, eller klikk her.» eller noe liknande. Dette kan gjerast i html, men også i php. Set inn koden

<?php
  header("refresh:10;url=den_nye_sida.php");
  echo 'Den nye sida blir henta automatisk om ca. 10 sekund. Du kan også
  klikke <a href="den_nye_sida.php">her</a>.';
?>

Send melding

© Innhald og design:  Kolbjørn StuestølStuestøl heimesideSist endra 11. april 2013