Avatar billede Gimhle Novice
22. oktober 2012 - 20:03 Der er 6 kommentarer og
1 løsning

Viderestilling i et php-script

Hej!

Kan jeg få lidt hjælp til et viderestillings-php-script.

Jeg har lige skiftet webhotel og er nu kommet i en dum situation, da det viderestillings-script som fungerede på det gamle webhotel ikke virker her på det nye webhotel.

$viderestil = "svar.htm";

Jeg har spurgt på webhotellets support og fik dette svar:
Du har en variabel i PHP der hedder viderestil. Du bruger bare ikke den variabel til noget.

Er der en eller anden der kan/vil hjælpe mig med hvordan scriptet skal være for at kunne lave en viderestilling. På forhånd. Tak!
Avatar billede nicolaib Praktikant
22. oktober 2012 - 20:31 #1
Du kan viderestille med PHP på denne måde:
<?php header("Location: $viderestil"); ?>

Det er dog vigtigt at notere sig, at denne viderestilling skal indsættes i koden, før du laver nogen former for output.

Dermed fungerer nedenstående ikke, da du allerede vil have lavet et output af et html-tag til browseren.
<html>
<?php header("Location: $viderestil"); ?>
Avatar billede Gimhle Novice
22. oktober 2012 - 20:44 #2
Jeg har allerede denne script på siden, men den sender ikke videre:

header("Location: $viderestil");

Jeg er temmelig meget "newbee" og skal derfor have en hjælpende hånd.
Jeg kan umiddelbart se at jeg "mangler" noget i forhold til det fremsendte script, bl.a. et mellemrum + ?
Avatar billede rix Praktikant
22. oktober 2012 - 22:14 #3
prøv
if(empty($viderestil))echo "fejl";
else header("location:",$viderestil);

Hvis der står fejl er det fordi $viderestil er tom.
Avatar billede nicolaib Praktikant
22. oktober 2012 - 22:30 #4
Du må heller ikke outputte så meget som et blankt mellemrum til browseren. Kan det tænkes, at der står noget i linjerne ovenfor? Dvs. før dit <?php-tag. Prøv evt. som test at skrive siden, du vil henvise til, direkte ind i linjen sådan her <?php header("Location: svar.htm"); ?> for at sikre, at det ikke er din syntax, der fejler.
Avatar billede Gimhle Novice
22. oktober 2012 - 22:37 #5
Hej begge!

Vil I kigge scriptet igennem for fejl /dubletter :-)
Er der dubletter der skal slettes ???

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Language" content="da">
</head>

<?php
$hjemmeside = "xxx xxxxxxxxxxx";
$mail = "xxxxxxx@xxxxxxxxxxxxxx.dk";
$viderestil = "svar.htm";

/* Her hentes oplysningerne fra de udfyldte felter */
$Kontakt = $_REQUEST['Kontakt'] ;
$email = $_REQUEST['E-mail'] ;
$kopi = $_REQUEST['kopi'];
$Til = $_REQUEST['Til'] ;
$Dag = $_REQUEST['Dag'] ;
$Dat = $_REQUEST['Dat'] ;
$Mdr = $_REQUEST['Mdr'] ;
$klokken = $_REQUEST['klokken'] ;
$xxxxxx_xxx = $_REQUEST['xxxxxx_xxx'] ;
$Boadressen = $_REQUEST['Boadressen'] ;
$Postnummer = $_REQUEST['Postnummer'] ;
$Besked = $_REQUEST['Besked'] ;
$Aar = $_REQUEST['Aar'] ;
$Telefon = $_REQUEST['Telefon'] ;

$emne="Forespørgsel vedr. $Dag d. $Dat $Mdr $Aar";

/* Her tjekkes, om afsenderen har indtastet sin mail-adresse, og i så fald bruges den som afsendeeradresse, så der kan svares på mailen */
if(!empty($email)) {
  $headers="From: $Kontakt <$email>\r\n";
}

/* Her indsættes din mailadresse, så afsenderen kan svare på kopimailen */
$formularheaders="From: $hjemmeside <$afsendermail>\r\n";

/* Her samles afsenderens navn, mailadresse og besked i en enkelt variabel */
$oplysninger="Forespørgsel på $Til\r
$Dag d. $Dat $Mdr $Aar, kl. $klokken
\r
xxxxxx xxx: $xxxxxx_xxx
Boadressen: $Boadressen
Postnummer: $Postnummer
\r
Kontakt: $Kontakt
E- mail: $email
Telefon: $Telefon
\r
Besked: $Besked
";

/* Her samles oplysningerne til afsenderens kopi af mailen */
$kopimail="Til: $Kontakt
Fra: www.xxx-xxxxxxxxxxx.dk
\r
Du har sendt en forespørgsel vedrørende et $Til\r
$Dag d. $Dat $Mdr $Aar, kl. $klokken
\r
xxxxxx xxx: $xxxxxx_xxx
Boadressen: $Boadressen
Postnummer: $Postnummer
\r
Kontakt: $Kontakt
E- mail: $email
Telefon: $Telefon
\r
Besked: $Besked
\r
Vi besvarer din forespørgsel hurtigst muligt
\r
venlig hilsen
xxx xxxxxxxxxxx
";

if ($kopi > '') {
  /* Her sendes til modtageradressen */
  mail($mail, $emne, $oplysninger, $headers);

  /* Her sendes en kopimail til afsenderen */
  mail($email, $emne, $kopimail, $formularheaders);
}
else {
  /* Her sendes mailen til modtageradressen */
  mail($mail, $emne, $oplysninger, $headers);
}

/* Nr mailen er sendt, viderestilles til denne hjemmeside */
header("Location: $viderestil");
?>
Avatar billede nicolaib Praktikant
22. oktober 2012 - 23:13 #6
Ja den er helt tydelig.
Det her skal stå som det første.
<?php
$hjemmeside = "xxx xxxxxxxxxxx";
$mail = "xxxxxxx@xxxxxxxxxxxxxx.dk";
$viderestil = "svar.htm";

/* Bla bla bla og husk at her må der heller ikke være nogen echoes eller prints.*/

header("Location: $viderestil");
?>

Det her må ikke sendes til browseren før din viderestilling:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Language" content="da">
</head>

Du kan løse det ved at flytte HTML-delen om efter din php-kode.
Avatar billede olebole Juniormester
22. oktober 2012 - 23:28 #7
<ole>

Du skal lige være opmærksom på, at PHP faktisk kan nå at eksekvere adskillige linjer kode efter header'en - inden redirect'en gennemføres. Derfor bør du altid stoppe afviklingen med exit:

header("Location: $viderestil");
exit();

Det undrer mig lidt, du ikke omtaler nogen fejlmeddelelser. PHP bør smide en fejl ved den kode, du viste i #5. Hvis det ikke sker, bør der helt klart gøres noget ved det. Ellers er det ikke til at udvikle PHP  =)

Har du adgang til selv at ændre indstillinger i php.ini filen?

/mvh
</bole>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester