Gå til innhold

variabel lik adressefeltet?


Anbefalte innlegg

Skrevet

Lenge siden jeg har holdt på med dette...

 

Men jeg har en adresse i adressefeltet mitt.

 

Og jeg har et skript.

 

Og jeg har en variabel i det skriptet som heter $htmlFile ...

 

Hvordan skal jeg få $htmlFile til å bli satt lik webadradressen som er før skriptet blir kjørt?

 

Dette er sikkert helt elementært, men nå er jeg trøtt :-)

 

Hvis noen har noen gode råd og tips, er blir jeg glad! ;)

Videoannonse
Annonse
Skrevet

$_SERVER er at array med variabler som webserveren og OSet allerede har definert for deg.

 

Eksempel;

echo 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];

 

Er omtrent den enkleste måten å hente ut en full URL, og vil være greit nok i 95% av tilfellene. Legg likevel merke til at den har en del svakheter;

 

* Den håndterer bare http://, og ikke andre protokoller som f.eks. https

* Den tar ikke med request-variabler (art.php?artikkel=35 vil bli til bare art.php), dette kan løses med å legge til $_SERVER['QUERY_STRING']

Skrevet (endret)

<edit> Fungerer helt fint den </edit>

 

Men har et problem til: Jeg har en hovedside, la oss kalle den server/hovedside.php

 

Når jeg trykker på lenken som er nede i høyre hjørnet, skal den hente adressen til hovedvindu.php og lage pdf av den.

 

hvis jeg legger echo 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];

i skriptet, tar han kun vare på webadressen til pdf-creatoren min.

 

 

Noen tips der?

Endret av bono_head
Gjest Slettet+142
Skrevet

Jeg hadde gjort dette:

$webside = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

Skrevet

bono_head: Du er med andre ord på jakt etter forrige URL brukeren har besøkt? Brukeren er på hovedside.php og trykker på en link til pdf-creator.php (eksempel), og du er da på jakt etter hovedside.php?

 

$_SERVER['HTTP_REFERER'] kan brukes, men husk at det er mulig å deaktivere referer-headerne, og det er veldig enkelt å forfalske en referer-header. Var jeg deg hadde jeg brukt en helt annen metode, som f.eks. å sende med url (eller mye bedre: artikkel-id el.l.) i GET til pdf-linken.

Skrevet

Så hvorfor ikke la "Create PDF" linke til hovedside.php?create_pdf=true, f.eks? Så er det aldri noe rom for å manipulere hva som skal lages PDF av, og etter at pdf'en er laget og sendt avgårde, kan brukeren automatisk sendes tilbake til hovedside.php (selv om brukeren i realiteten aldri har forlatt hovedside.php). :)

 

Da benytter du overnevnte (HTTP_HOST . REQUEST_URI) for å lage "Create PDF"-linken (bare sleng på ?create_pdf=true på slutten), og du slipper vanskeligheter med at ting kan manipuleres særlig mye. Om du er veldig paranoid kan du til og med hardkode inn PDF-linken. :)

Gjest Slettet+142
Skrevet

Side som inneholder PDF-knapp:

.....
<a href="pdf.php">PDF Knapp</a>
....

 

pdf.php:

<?php
$forrige_url = $_SERVER["HTTP_REFERER"];
echo 'Du kom ifra denne URL'en: <i>'.$forrige_url.'</i>';
?>
...

 

Om du ikke gjør som jorgis tipser, er vel det over eksempel på det forrige jorgis sa...

Skrevet (endret)
pdf.php:

<?php

$forrige_url = $_SERVER["HTTP_REFERER"];

echo 'Du kom ifra denne URL'en: <i>'.$forrige_url.'</i>';

?>

 

 

Limte inn denne "$forrige_url = $_SERVER["HTTP_REFERER"];

echo 'Du kom ifra denne URL'en: <i>'.$forrige_url.'</i>';" direkte i filen, og da fikk jeg:

 

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /var/www/jhtml2pdf/testpdf.php on line 27

Endret av bono_head
Skrevet

I en streng omsluttet av enkeltfnutter ( ' ) kan du ikke bruke enkeltfnutter (som i "URL'en"). Det korrekte skal være;

 

<?php
$forrige_url = $_SERVER["HTTP_REFERER"];
echo "Du kom ifra denne URL'en: <i>{$forrige_url}</i>";
?>

Gjest Slettet+142
Skrevet
I en streng omsluttet av enkeltfnutter ( ' ) kan du ikke bruke enkeltfnutter (som i "URL'en"). Det korrekte skal være;

9001570[/snapback]

Kremt, gikk litt fort i svingene der, ja :blush:

Skrevet
Så hvorfor ikke la "Create PDF" linke til hovedside.php?create_pdf=true, f.eks? Så er det aldri noe rom for å manipulere hva som skal lages PDF av, og etter at pdf'en er laget og sendt avgårde, kan brukeren automatisk sendes tilbake til hovedside.php (selv om brukeren i realiteten aldri har forlatt hovedside.php). :)

 

Da benytter du overnevnte (HTTP_HOST . REQUEST_URI) for å lage "Create PDF"-linken (bare sleng på ?create_pdf=true på slutten), og du slipper vanskeligheter med at ting kan manipuleres særlig mye. Om du er veldig paranoid kan du til og med hardkode inn PDF-linken. :)

9001035[/snapback]

 

Har du et eksempel til meg? Må prøve når jeg sitter foran laptopen i morgen tidlig...

Skrevet (endret)

hovedside.php

<?php
if (isset($_GET['create_pdf']) && $_GET['create_pdf'] == 'true')
{
   // Lag PDF-versjon og vis den til bruker
}

// Resten av hovedside.php, inkludert Create PDF-linken din, som blir
// $nåværende_side + "?create_pdf=true"

 

Det finnes et utall andre måter å løse dette på, men dette var det første jeg kom på som en ålreit løsning. Kommer selvfølgelig an på hvordan resten av systemet ditt er satt sammen.. :)

Endret av jorgis
Gjest Slettet+142
Skrevet

Du kan jo sette en variabel etter hvilken fil som lastes. Eller konstant.

 

At du for eksempel kan ha i toppen av hver fil som skal inkluderes dette:

define("SIDE", __FILE__);

 

Eller misforstod jeg nå?

Skrevet

Har du noe eksempel på det?

 

Jeg er usikker på hva du mener her med define("SIDE", _FILE_);

 

HTTP_REFERER fungerer helt fint!

 

Har et til spm i samme slengen: Skal lage en previous next. Adressen er 192.168./server/index.php?option=com_wrapper&Itemid=17

 

Er det noe lett måte å sjekke Itemid=et tall, og la previous være tall -1 og next være tall + 1?

Gjest Slettet+142
Skrevet

Jeg vet ikke helt hvordan systemet med alle disse "hovedsidene" dine er satt opp så kan ikke gi noe mer eksempel enn forslaget over.

 

Men til det nye spørsmålet; is_numeric() :)

 

Eksempel på bruk av is_numeric():

<?php
$tall = 5;

if( is_numeric($tall) ){
 echo "{$tall} er et tall!";
}else{
 echo "{$tall} er ikke et tall!";
}

?>

Gjest Slettet+142
Skrevet

$tall = $_GET['Itemid'];

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...