Solved

passing argument to PHP script

Posted on 2001-07-15
13
2,816 Views
Last Modified: 2012-08-14
myScript.php?arg is the conventional way to pass an argument to a script.  Is there a way to do it without the ? (question mark)

Any tutorials anywhere about all the different ways to treat php arguments?
0
Comment
Question by:anocean
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 4
  • 2
  • +2
13 Comments
 
LVL 4

Expert Comment

by:ykf2000
ID: 6284417
Hi,


There 4 ways to do it:

1) In the query string as in yourScript.php?arg=1

2) By submitting a form <input type="hidden" name="arg" value="1">

3) By a cookie as in setcookie("arg","1");

4) By using a session variable
   $arg = 1;
   session_register("arg");


To access the variables:

1) Use $PHP_GET_VARS["arg"] or simply $arg for method 1.

2) Use $PHP_POST_VARS["arg"] or simply $arg for method 2.

3) Use $PHP_COOKIE_VARS["arg"] or simply $arg for method 3.

4) Use $arg for session


Note that if you have variables of the same name coming from different method it is better to fully qualify it with the proper way.
0
 

Author Comment

by:anocean
ID: 6284421
I appreciate the trouble you went to but it didn't really answer the question, which is specifically about the format for a script URL.

Is there any way around having to use the question mark (?) immediately after .php suffix?
And is there a tutorial specifically about URL syntax for scripts?
0
 
LVL 4

Expert Comment

by:ykf2000
ID: 6284426
I do not think there is a way for you to do that without a ? behind. The  ? is used to differentiate the URL and the arguments passed. Without the ? there is no way to do that. :)
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

Author Comment

by:anocean
ID: 6284431
Yeah, that's kind of what I expected to hear.  Nevertheless, I'm going to leave the question open for a couple days, but will not forget to award the points if no further answers appear.
0
 

Accepted Solution

by:
juan_tanga earned 50 total points
ID: 6284969
you can use the "/" instead of "?" in storing the args values...  well here's an example of it.

ex.

myScript.php/value1/value2/value3/

and this args are store in "PATH_INFO" environment var.
PATH_INFO = /value1/value2/value3/

to access each value, you need to split the values by "/"
$value_array = explode("/",$PATH_INFO);
$value_1 = $value_array[1];
$value_2 = $value_array[2];
$value_2 = $value_array[3];

hope this will help. :o)








0
 

Author Comment

by:anocean
ID: 6285058
juan tanga, your idea sounds positively spicy, but it doesn't work straight out of the box, cuz I get CGI error.
You finish this one and I'm giving you 100 point tip.
0
 

Expert Comment

by:juan_tanga
ID: 6285130
may i know what error u get?
0
 

Author Comment

by:anocean
ID: 6285156
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

It's cuz I try URL index.php/eee/555/
and that directory, of course, doesn't exist.
0
 

Expert Comment

by:juan_tanga
ID: 6285214
oops...

so u're using a cgi-module of php perhaps... I tried that one using a api-module of php and i have not test it using cgi-module version of php...
0
 

Expert Comment

by:juan_tanga
ID: 6285224
try printing the value of PATH_INFO... and see if the parameter store in that environment variable..

ex. echo $PATH_INFO or echo $GLOBALS["PATH_INFO"]
0
 
LVL 2

Expert Comment

by:curri
ID: 6285273
I think ykf200 is correct (and the answer was very complete). However, depending on your webserver, you can cheat :)

If you're using Apache, you can make it rewrite the url, I think with general regular expressions, so you can write one url and let the server transform it into one with the ? :). I assume you can do that with other servers too.

A funny example of that is the isgay.com web site. Go say to john.doe.isGay.com (exercise caution, you may find it ofensive).

Orlando
0
 
LVL 2

Expert Comment

by:higijj
ID: 6287247
you can try and read about the rewrite module for apache..

I think it can do what you waht to.
0
 

Author Comment

by:anocean
ID: 6300714
very imaginative.
0

Featured Post

Don't Cry: How Liquid Web is Ensuring Security

WannaCry is just the start. Read how Liquid Web is protecting itself and its customers against new threats.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Things That Drive Us Nuts Have you noticed the use of the reCaptcha feature at EE and other web sites?  It wants you to read and retype something that looks like this. Insanity!  It's not EE's fault - that's just the way reCaptcha works.  But it i…
Introduction This article is intended for those who are new to PHP error handling (https://www.experts-exchange.com/articles/11769/And-by-the-way-I-am-New-to-PHP.html).  It addresses one of the most common problems that plague beginning PHP develop…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to count occurrences of each item in an array.

630 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question