Post Reply 
 
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to POST / GET params with '+' char inside ?
2020-02-11, 15:36 (This post was last modified: 2020-02-12 01:34 by alhyene.)
Post: #1
How to POST / GET params with '+' char inside ?
Hi, first sorry for the previous twice posting which were not working, may because the forum seem to be a little down at that times.

I'm trying to store some parameters on webserver which I can retrieve later in a script form, but can't get the '+' sign to be send / retrieve.

#!ipxe
set data_1:string some+thing
set data_2:uristring some+thing
params --name mydata
param --params mydata data_1 ${data_1}
param --params mydata data_2 ${data_2}
imgfetch http://webserver/conf.php##params=mydata || echo can't POST
//imgfetch http://webserver/conf.php?data_1=some+thing || echo can't GET

conf.php file from webserver :

<?php
$myfile = fopen("/var/www/html/mydata", "wb") or die("Unable to open file!");
fwrite($myfile, "#!ipxe\n");

//foreach ($_GET as $key => $value){
foreach ($_POST as $key => $value){
$txt = "set " . $key . "\t" . $value . "\n";
fwrite($myfile, $txt);
}
fclose($myfile);
?>

result of mydata file :

#!ipxe
set data_1 some thing
set data_2 some thing

I need this for URL like :

https://cloudfront.debian.net/cdimage/un...onfree.iso

Any ideas ?
Find all posts by this user
Quote this message in a reply
2020-02-13, 10:21
Post: #2
RE: How to POST / GET params with '+' char inside ?
Don't know the exact answer, but I think this approach should work. The hex value for ASCII "+" is 2B.

As noted there, if it doesn't work, echo the URL in iPXE.
Find all posts by this user
Quote this message in a reply
2020-02-15, 22:01 (This post was last modified: 2020-02-15 22:23 by alhyene.)
Post: #3
RE: How to POST / GET params with '+' char inside ?
thx for reply, I tried it.

set plus:hex 2b
set plus ${plus:string}
set myURL some${plus}thing

params --name mydata
param --params mydata data_1 ${myURL}
etc...

unfortunaly don't work.

Is this "bug" come from iPXE or webserver / php5 side ?

but if I try :

params --name mydata
param --params mydata data_1 some${plus}thing
etc...

I got : some_thing
and not : some+thing

params --name mydata
param --params mydata data_1 some+thing
etc...

the same (some_thing)

Huh
Find all posts by this user
Quote this message in a reply
2020-02-17, 00:33
Post: #4
RE: How to POST / GET params with '+' char inside ?
Did you try echoing ${myURL}? Perhaps I misunderstood the problem - if it's the params features causing the issue, perhaps you can use standard URL encoding, and request some%2Bthing instead of some+thing?
Find all posts by this user
Quote this message in a reply
2020-02-18, 14:47
Post: #5
RE: How to POST / GET params with '+' char inside ?
Hi, yes I tried substitute with %2B like :

param --mydata data_1 some%2Bthing , with no luck...

I tried both POST & GET methods with same results.
I tried GET method by the browser and work as expected, eg :
http://127.0.0.1/conf.php?data=some%2Bthing

mydata file : some+thing

Then I think it's an iPXE issue.

But I made an ugly and dirty hack to make it works by using base64 encoding, eg :

#!ipxe
set data_1:string some+thing
set data_2.....
params --name mydata
param --params mydata data_1 ${data_1:base64}
param --params mydata data_2.....
imgfetch http://webserver/conf.php##params=mydata || echo can't POST

conf.php file from webserver :

<?php
$myfile = fopen("/var/www/html/mydata", "wb") or die("Unable to open file!");
fwrite($myfile, "#!ipxe\n");

foreach ($_POST as $key => $value){
$txt = "set " . $key . "\t" . base64_decode($value) . "\n";
fwrite($myfile, $txt);
}
fclose($myfile);
?>

result of mydata file :

#!ipxe
set data_1 some+thing
set data_2.....

Dodgy
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)