/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Hente variabel ud af LANG url
Fra : M


Dato : 10-05-06 09:21

Hej!

Min URL sti ser således ud:

https://pay.dandomain.dk/securetunnel.asp?navn=&beloeb=23&merchantnumber=XXXXXXX&SessionID=PHPSESSID%253D92f5239b449c9c07e43e106054b90eda&tunnelurl=http%3A%2F%2Fwww.bigm.dk%2Ftest%2Fdk%2Findtast.php

Hvordan tager jeg værdien af beloeb og smider det ind i en variabel?

Jeg kan bruge $_GET["beloeb"] men kun i tilfælde hvor URL'en ser
således ud: http://www.noget.dk/siden.php?beloeb=10

På forhånd tak

 
 
Johan Holst Nielsen (10-05-2006)
Kommentar
Fra : Johan Holst Nielsen


Dato : 10-05-06 10:43

M wrote:
> Hej!
>
> Min URL sti ser således ud:
>
> https://pay.dandomain.dk/securetunnel.asp?navn=&beloeb=23&merchantnumber=XXXXXXX&
SessionID=PHPSESSID%253D92f5239b449c9c07e43e106054b90eda&tunnelurl=http%3A%2F%2Fwww.bigm.dk%2Ftest%2Fdk%2Findtast.php
>
> Hvordan tager jeg værdien af beloeb og smider det ind i en variabel?
>
> Jeg kan bruge $_GET["beloeb"] men kun i tilfælde hvor URL'en ser
> således ud: http://www.noget.dk/siden.php?beloeb=10

Eftersom det kun er
www.bigm.dk/test/dk/indtast.php der loades på dine server - kan du ikke
hente beløb... Så skal du smide beloeb parametren med i tunnelurl adressen.

Mvh
Joahn

M (10-05-2006)
Kommentar
Fra : M


Dato : 10-05-06 11:21

>Eftersom det kun er
>www.bigm.dk/test/dk/indtast.php der loades på dine server - kan du ikke
>hente beløb... Så skal du smide beloeb parametren med i tunnelurl adressen.

hmm... du siger noget... jeg kigger lige på det.

Takker

M (10-05-2006)
Kommentar
Fra : M


Dato : 10-05-06 11:54

>hmm... du siger noget... jeg kigger lige på det.
>

Nu har jeg fået beloieb til at stå på den anden side, men kan stadig
ikke få værdien ind i en variabel:

https://pay.dandomain.dk/securetunnel.asp?navn=&merchantnumber=XXXXXXX&SessionID=PHPSESSID%253D92f5239b449c9c07e43e106054b90eda&tunnelurl=http%3A%2F%2Fwww.bigm.dk%2Ftest%2Fdk%2Findtast.php&beloeb=45

M (10-05-2006)
Kommentar
Fra : M


Dato : 10-05-06 12:00

On Wed, 10 May 2006 12:54:18 +0200, M <infoREMOVE-THIS@bigm.dk> wrote:

>>hmm... du siger noget... jeg kigger lige på det.
>>
>
>Nu har jeg fået beloieb til at stå på den anden side, men kan stadig
>ikke få værdien ind i en variabel:
>
>https://pay.dandomain.dk/securetunnel.asp?navn=&merchantnumber=XXXXXXX&SessionID=PHPSESSID%253D92f5239b449c9c07e43e106054b90eda&tunnelurl=http%3A%2F%2Fwww.bigm.dk%2Ftest%2Fdk%2Findtast.php&beloeb=45

Hah... kan se at det er et & og ikke et ? tegn til sidst i stien.
hmm... gad vide hvordan jeg kan ændre det?

Christoffer (10-05-2006)
Kommentar
Fra : Christoffer


Dato : 10-05-06 14:14


"M" <infoREMOVE-THIS@bigm.dk> skrev i en meddelelse
news:ush362dle86u211d4k6d2p9keneihjecfp@4ax.com...
> On Wed, 10 May 2006 12:54:18 +0200, M <infoREMOVE-THIS@bigm.dk> wrote:
> >>hmm... du siger noget... jeg kigger lige på det.

> >Nu har jeg fået beloieb til at stå på den anden side, men kan stadig
> >ikke få værdien ind i en variabel:
>
>https://pay.dandomain.dk/securetunnel.asp?navn=&merchantnumber=XXXXXXX&Sess
ionID=PHPSESSID%253D92f5239b449c9c07e43e106054b90eda&tunnelurl=http%3A%2F%2F
www.bigm.dk%2Ftest%2Fdk%2Findtast.php&beloeb=45
> Hah... kan se at det er et & og ikke et ? tegn til sidst i stien.
> hmm... gad vide hvordan jeg kan ændre det?
Spørgsmål:
Gør det ikke en forskel at bruge &amp; frem for & alene?



M (10-05-2006)
Kommentar
Fra : M


Dato : 10-05-06 14:49


>Gør det ikke en forskel at bruge &amp; frem for & alene?
>

Jo! &amp er den rigtige måde at gøre det på, men & bliver slet ikke
brugt i koden:


<?php

//Sætter session for ordrenummer og beløb merchantnummer
session_start();
session_register( "Orderid", "Amountp", "merchantnumber" );
$_SESSION["Orderid"] = "10"; // ordre nummer
//$HTTP_SESSION_VARS["Amountp"] = $_REQUEST["beloeb"]; //Beløb
$_SESSION["merchantnumber"] = "XXXXXXX"; //Forretningsnummer

if (isset($_GET["beloeb"])) $beloeb=$_GET["beloeb"];
      else $beloeb=1;
?>

<body>
<table border="0" cellpadding="6" cellspacing="1" width="500">
   <tr>
<td height="23" colspan="2"><b>Powerhosting Online
Betaling:</b><br><br></td>
   </tr>

   <tr>
<td height="23" colspan="2">
Her på siden kan du nemt og sikkert indbetale skyldigt beløb til
Powerhosting.dk<br><br>

<form method="get"
action="https://pay.dandomain.dk/securetunnel.asp">
   <!-- Navn<br><input type="text" name="navn"><br> -->
   
<input type="hidden" name="merchantnumber"
value="<?php echo $_SESSION['merchantnumber']?>">
<input type="hidden" name="SessionID"
value="<?php echo urlencode(getenv("HTTP_COOKIE"))?>">
<input type="hidden" name="tunnelurl"
value="http://www.bigm.dk/test/dk/indtast.php">
Beløb<br><input type="text" name="beloeb" value="0">
<br><br><input type="submit" value="Videre">
</form>

</td>
   </tr>
   
</table>

</body>
</html>

Bjarne Bue (15-05-2006)
Kommentar
Fra : Bjarne Bue


Dato : 15-05-06 11:39

M wrote:
> On Wed, 10 May 2006 12:54:18 +0200, M <infoREMOVE-THIS@bigm.dk> wrote:

>> Nu har jeg fået beloieb til at stå på den anden side, men kan stadig
>> ikke få værdien ind i en variabel:
>>
>> https://pay.dandomain.dk/securetunnel.asp?navn=&merchantnumber=XXXXXXX&SessionID=PHPSESSID%253D92f5239b449c9c07e43e106054b90eda&tunnelurl=http%3A%2F%2Fwww.bigm.dk%2Ftest%2Fdk%2Findtast.php&beloeb=45
>
> Hah... kan se at det er et & og ikke et ? tegn til sidst i stien.
> hmm... gad vide hvordan jeg kan ændre det?

Du forsøger at sende variable fra en form til to forskellige
scripts. Det kan ikke umiddelbart lade sig gøre. Din tunnelurl er
statisk, og kan ikke ændres, når først formen er loadet (med
mindre du bruger javascript, og det er ikke nogen pæn løsning).

Du kan løse dit problem ved at bruge en redirect-side, som jeg
nævnte i et svar på dit forrige spørgsmål. Du sender alle
oplysninger til redirect-siden, og sammensætter din URL ud fra de
oplysninger.

Fx:

<form method="post" action="redirect.php">
<input type="text" name="beloeb">
<input type="submit" value="Videre">
</form>

redirect.php:
<?php
session_start();
$tunnelurl = "http://www.bigm.dk/test/dk/indtast.php?beloeb="
. $_POST['beloeb'];
$redirectURL = "https://pay.dandomain.dk/securetunnel.asp"
. "?merchantnumber=" . $_SESSION['merchantnumber']
. "&SessionID=" . urlencode(getenv("HTTP_COOKIE"))
. "&beloeb=" . $_POST['beloeb']
. "&tunnelurl=" . $tunnelurl;
header("Location: " . $redirectURL);
?>

Denne løsning vil muligvis give problemer, hvis din tunnelurl
skal bruge flere variable. Jeg er ikke helt sikker på, hvad der
sker, hvis din tunnelurl fx ser sådan ud:
<http://www.bigm.dk/test/dk/indtast.php?beloeb=20&navn=Hugo>.
Sandsynligvis vil variablen 'navn' blive sendt til din
betalings-gateway, og det er jo ikke meningen. Det kan løses ved
at bruge et andet skilletegn end & i tunnelurl, men det kan vi
altid vende tilbage til, hvis du får problemer med det.

Med venlig hilsen
Bjarne

M (16-05-2006)
Kommentar
Fra : M


Dato : 16-05-06 07:12

>Du forsøger at sende variable fra en form til to forskellige
>scripts. Det kan ikke umiddelbart lade sig gøre. Din tunnelurl er
>statisk, og kan ikke ændres, når først formen er loadet (med
>mindre du bruger javascript, og det er ikke nogen pæn løsning).

Det lyder ikke pænt at blande java ind i det!

>Du kan løse dit problem ved at bruge en redirect-side, som jeg
>nævnte i et svar på dit forrige spørgsmål. Du sender alle
>oplysninger til redirect-siden, og sammensætter din URL ud fra de
>oplysninger.

Ups.. det har du ret i. Den er røget ind og ud lige så hurtigt. Jeg
kigger lige på den løsning.

Tusind tak.

M (18-05-2006)
Kommentar
Fra : M


Dato : 18-05-06 10:41

dk.php ->

<form method="post" action="redirect.php">
<input type="text" name="beloeb">
<input type="submit" value="Videre">
</form>


--------------------------------------------------------------------------------------

redirect.php ->

<?php

//Sætter session for ordrenummer og beløb merchantnummer
session_start();
session_register( "Orderid", "Amountp", "merchantnumber" );
$_SESSION["Orderid"] = "10"; // ordre nummer
//$HTTP_SESSION_VARS["Amountp"] = $_REQUEST["beloeb"]; //Beløb
$_SESSION["merchantnumber"] = "XXXXXXX"; //Forretningsnummer

//if (isset($_GET["beloeb"])) $beloeb=$_GET["beloeb"];
//      else $beloeb=1;

?>

<body>
<table border="0" cellpadding="6" cellspacing="1" width="500">
   <tr>
<td height="23" colspan="2"><b>Powerhosting Online
Betaling:</b><br><br></td>
   </tr>

   <tr>
<td height="23" colspan="2">
Her på siden kan du nemt og sikkert indbetale skyldigt beløb til
Powerhosting.dk<br><br>

<?php


$tunnelurl = "http://www.bigm.dk/test/dk/indtast.php?beloeb="
. $_POST['beloeb'];
$redirectURL = "https://pay.dandomain.dk/securetunnel.asp"
. "?merchantnumber=" . $_SESSION['merchantnumber']
. "&SessionID=" . urlencode(getenv("HTTP_COOKIE"))
. "&beloeb=" . $_POST['beloeb']
. "&tunnelurl=" . $tunnelurl;
header("Location: " . $redirectURL);
?>
</td>
   </tr>
   
</table>

</body>
</html>

Jeg får desværre denne fejl:

Warning: Cannot modify header information - headers already sent by
(output started at /mnt/raid/www/www/bigm/test/dk2/redirect.php:24) in
/mnt/raid/www/www/bigm/test/dk2/redirect.php on line 34

Jeg kan ikke lige gennemskue hvad problemet er.

Bjarne Bue (18-05-2006)
Kommentar
Fra : Bjarne Bue


Dato : 18-05-06 11:37

M wrote:
> dk.php ->
>
> <form method="post" action="redirect.php">
> <input type="text" name="beloeb">
> <input type="submit" value="Videre">
> </form>
>
>
> --------------------------------------------------------------------------------------
>
> redirect.php ->
>
> <?php
>
> //Sætter session for ordrenummer og beløb merchantnummer
> session_start();
> session_register( "Orderid", "Amountp", "merchantnumber" );
> $_SESSION["Orderid"] = "10"; // ordre nummer
> //$HTTP_SESSION_VARS["Amountp"] = $_REQUEST["beloeb"]; //Beløb
> $_SESSION["merchantnumber"] = "XXXXXXX"; //Forretningsnummer
>
> //if (isset($_GET["beloeb"])) $beloeb=$_GET["beloeb"];
> //      else $beloeb=1;
>
> ?>
>
> <body>
> <table border="0" cellpadding="6" cellspacing="1" width="500">
>    <tr>
> <td height="23" colspan="2"><b>Powerhosting Online
> Betaling:</b><br><br></td>
>    </tr>
>
>    <tr>
> <td height="23" colspan="2">
> Her på siden kan du nemt og sikkert indbetale skyldigt beløb til
> Powerhosting.dk<br><br>
>
> <?php
>
>
> $tunnelurl = "http://www.bigm.dk/test/dk/indtast.php?beloeb="
> . $_POST['beloeb'];
> $redirectURL = "https://pay.dandomain.dk/securetunnel.asp"
> . "?merchantnumber=" . $_SESSION['merchantnumber']
> . "&SessionID=" . urlencode(getenv("HTTP_COOKIE"))
> . "&beloeb=" . $_POST['beloeb']
> . "&tunnelurl=" . $tunnelurl;
> header("Location: " . $redirectURL);
> ?>
> </td>
>    </tr>
>    
> </table>
>
> </body>
> </html>
>
> Jeg får desværre denne fejl:
>
> Warning: Cannot modify header information - headers already sent by
> (output started at /mnt/raid/www/www/bigm/test/dk2/redirect.php:24) in
> /mnt/raid/www/www/bigm/test/dk2/redirect.php on line 34
>
> Jeg kan ikke lige gennemskue hvad problemet er.

Du må ikke have noget output på en side, der kalder header(),
ikke engang et mellemrum. Al din html skal stå i dk.php,
redirect.php skal kun indeholde den php-kode, der videresender
til din betalings-gateway (dvs. det, der opbygger $tunnelurl og
kalder header()).

Med venlig hilsen
Bjarne

M (18-05-2006)
Kommentar
Fra : M


Dato : 18-05-06 13:02

>Du må ikke have noget output på en side, der kalder header(),
>ikke engang et mellemrum. Al din html skal stå i dk.php,
>redirect.php skal kun indeholde den php-kode, der videresender
>til din betalings-gateway (dvs. det, der opbygger $tunnelurl og
>kalder header()).
>
>Med venlig hilsen
>Bjarne

Hep Hey!

Du er for sej!
Tusind tak.

Jeg har prøvet at tilføje

. "&navn=" . $_POST['navn'];

i

$tunnelurl = "http://www.bigm.dk/test/dk2/indtast.php?beloeb="
. $_POST['beloeb']
. "&navn=" . $_POST['navn'];

Men jeg kan ikke hente navn ind via $_GET

Hvordan fikser jeg den?

Takker

Bjarne Bue (18-05-2006)
Kommentar
Fra : Bjarne Bue


Dato : 18-05-06 13:56

M wrote:
> Jeg har prøvet at tilføje
>
> . "&navn=" . $_POST['navn'];
>
> i
>
> $tunnelurl = "http://www.bigm.dk/test/dk2/indtast.php?beloeb="
> . $_POST['beloeb']
> . "&navn=" . $_POST['navn'];
>
> Men jeg kan ikke hente navn ind via $_GET
>
> Hvordan fikser jeg den?

Det er fordi din URL kommer til at se sådan ud (lidt forenklet):

<https://pay.dandomain.dk/securetunnel.asp?merchantnumber=xxx&tunnelurl=http://www.bigm.dk/indtast.php?beloeb=20&navn=Hugo>

Alle variable i URL'en bliver sendt til scriptet
securetunnel.asp, og hver gang der optræder et &-tegn, opfattes
det som en ny variabel.

Hvis din tunnelurl skal have flere variable, må du bruge et andet
skilletegn end &, og så skal du igennem lidt fiksfakserier for at
få det til at virke. Hvis du fx bruger ! som skilletegn, kan du
bygge din URL sådan:

$tunnelurl = "http://www.bigm.dk/test/dk2/indtast.php?var="
. $_POST['beloeb']
. "!" . $_POST['navn'];

Så sender du kun én variabel med tunnelurl, men den indeholder
flere værdier. Du kan plukke de enkelte værdier ud sådan (i
indtast.php):

<?php
$varArray = explode("!", $_GET['var']);
$beloeb = $varArray[0];
$navn = $varArray[1];
?>

Med venlig hilsen
Bjarne

M (18-05-2006)
Kommentar
Fra : M


Dato : 18-05-06 14:06


>Hvis din tunnelurl skal have flere variable, må du bruge et andet
>skilletegn end &, og så skal du igennem lidt fiksfakserier for at
>få det til at virke. Hvis du fx bruger ! som skilletegn, kan du
>bygge din URL sådan:
>
>$tunnelurl = "http://www.bigm.dk/test/dk2/indtast.php?var="
> . $_POST['beloeb']
> . "!" . $_POST['navn'];
>
>Så sender du kun én variabel med tunnelurl, men den indeholder
>flere værdier. Du kan plukke de enkelte værdier ud sådan (i
>indtast.php):
>
><?php
>$varArray = explode("!", $_GET['var']);
>$beloeb = $varArray[0];
>$navn = $varArray[1];
>?>
>
>Med venlig hilsen
>Bjarne


Tusind tak!

Jeg kigger på det, og vender tilbage!

M (19-05-2006)
Kommentar
Fra : M


Dato : 19-05-06 13:38

>Det er fordi din URL kommer til at se sådan ud (lidt forenklet):
>
><https://pay.dandomain.dk/securetunnel.asp?merchantnumber=xxx&tunnelurl=http://www.bigm.dk/indtast.php?beloeb=20&navn=Hugo>
>
>Alle variable i URL'en bliver sendt til scriptet
>securetunnel.asp, og hver gang der optræder et &-tegn, opfattes
>det som en ny variabel.
>
>Hvis din tunnelurl skal have flere variable, må du bruge et andet
>skilletegn end &, og så skal du igennem lidt fiksfakserier for at
>få det til at virke. Hvis du fx bruger ! som skilletegn, kan du
>bygge din URL sådan:
>
>$tunnelurl = "http://www.bigm.dk/test/dk2/indtast.php?var="
> . $_POST['beloeb']
> . "!" . $_POST['navn'];
>
>Så sender du kun én variabel med tunnelurl, men den indeholder
>flere værdier. Du kan plukke de enkelte værdier ud sådan (i
>indtast.php):
>
><?php
>$varArray = explode("!", $_GET['var']);
>$beloeb = $varArray[0];
>$navn = $varArray[1];
>?>
>
>Med venlig hilsen
>Bjarne

Virker jo kanon! Næsten da. Hvis jeg f.eks. skrive Hans Otto i navnet,
og hopper videre, får jeg flg. fejl:

Bad Request
Your browser sent a request that this server could not understand.
The request line contained invalid characters following the protocol
string.

Scriptet kan umiddelbart ikke håndtere mellemrum!

Bjarne Bue (19-05-2006)
Kommentar
Fra : Bjarne Bue


Dato : 19-05-06 14:03

M wrote:
> Virker jo kanon! Næsten da. Hvis jeg f.eks. skrive Hans Otto i navnet,
> og hopper videre, får jeg flg. fejl:
>
> Bad Request
> Your browser sent a request that this server could not understand.
> The request line contained invalid characters following the protocol
> string.
>
> Scriptet kan umiddelbart ikke håndtere mellemrum!

Hvis du bruger urlencode() på navnet, så skulle det løse
problemet. <http://dk.php.net/urlencode>.

Jeg kom til at tænke på, at det egentlig ville være meget
lettere, hvis du kom de variable du skal have overført i
session-arrayet. Altså sæt
$_SESSION['beloeb'] = $_POST['beloeb'];
$_SESSION['navn'] = $_POST['navn'];
osv.

Så slipper du for at sætte variable på din tunnelurl.

Med venlig hilsen
Bjarne

M (22-05-2006)
Kommentar
Fra : M


Dato : 22-05-06 07:44

Takker. Men...

>Hvis du bruger urlencode() på navnet, så skulle det løse
>problemet. <http://dk.php.net/urlencode>.

"!" . urlencode($_POST['navn']);

=

beloeb=12!Karl+Otti
--------------------------------------------------
"!" . urldecode($_POST['navn']);

=

?beloeb=12!Karl%20Otti
-------------------------------------------------

Begge tilfælde returnere samme fejl.

>Jeg kom til at tænke på, at det egentlig ville være meget
>lettere, hvis du kom de variable du skal have overført i
>session-arrayet. Altså sæt
>$_SESSION['beloeb'] = $_POST['beloeb'];
>$_SESSION['navn'] = $_POST['navn'];
>osv.
>
>Så slipper du for at sætte variable på din tunnelurl.
>
>Med venlig hilsen
>Bjarne

Yep... det ville have sparret en del, men problemer er, at når jeg
kører en $_session variabel igennem en tunnel, så går de tabt.
Jeg kunne også vælge blot at lave alle indtastninger på samme side.
Men det giver bare ikke nogen løsning på URL problemet!

Bjarne Bue (22-05-2006)
Kommentar
Fra : Bjarne Bue


Dato : 22-05-06 12:42

M wrote:
> Takker. Men...
>
>> Hvis du bruger urlencode() på navnet, så skulle det løse
>> problemet. <http://dk.php.net/urlencode>.
>
> "!" . urlencode($_POST['navn']);
>
> =
>
> beloeb=12!Karl+Otti
> --------------------------------------------------
> "!" . urldecode($_POST['navn']);
>
> =
>
> ?beloeb=12!Karl%20Otti
> -------------------------------------------------
>
> Begge tilfælde returnere samme fejl.

Jeg kan ikke genskabe din fejl på min egen server, så nu gætter
jeg bare. Hvis det kun er mellemrummene, der giver problemer, så
kan du erstatte dem med fx underscore, inden du sammensætter din
URL. Prøv med noget i retning af

$navn = $_POST['navn'];
str_replace(" ", "_", $navn);

<http://dk.php.net/str_replace>

Og så skal du selvfølgelig fjerne underscores igen, når du senere
trækker navnet ud fra URL'en. :)

Med venlig hilsen
Bjarne

M (22-05-2006)
Kommentar
Fra : M


Dato : 22-05-06 13:07

>Jeg kan ikke genskabe din fejl på min egen server, så nu gætter
>jeg bare. Hvis det kun er mellemrummene, der giver problemer, så
>kan du erstatte dem med fx underscore, inden du sammensætter din
>URL. Prøv med noget i retning af
>
>$navn = $_POST['navn'];
>str_replace(" ", "_", $navn);
>
><http://dk.php.net/str_replace>
>
>Og så skal du selvfølgelig fjerne underscores igen, når du senere
>trækker navnet ud fra URL'en. :)
>
>Med venlig hilsen
>Bjarne

hæhæhæ... Det virker sq.

Tusind mange tak for hjælpen.

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste