-
July 27th, 2002, 06:20 AM
#1
PHP Parse Error...
Ok, IM trying to write the code to my PHP Program that takes a variable from the browser (book.php?page=1)... I think Im going in the right direction but when I try to execute the following code it gives me a parse eroor:
Code:
Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in D:\Apache\htdocs\book.php on line 2
Here is my PHP code...
PHP Code:
<?php
header("location: $_GET["page"]");
if (page = 1) {
print("www.antionline.com");
}
?>
Any suggestionPS: What im trying to get with this code is that it will take the variable(?page=1) read it into the program and redirect the user to a specific output depending on that variable...
-
July 27th, 2002, 07:12 AM
#2
Banned
Here is somebody with your problem and some solutions.
<?php
print "Your first name is $HTTP_POST_VARS['FirstName'].
\n";
print "Your last name is $HTTP_POST_VARS['LastName'].
\n";
print "Your E-mail address is $HTTP_POST_VARS['Email'].
\n";
print "This is what you had to say:
\n $HTTP_POST_VARS['Comments']
\n";
?>
just change the double quotes to single quotes for all $HTTP_POST_VARS[''] variables.
Hope dis helps.
EDIT:
"You can still force the old behaviour by setting register_globals to 'On' in your php.ini file."
Sorry I didn't post the link last time, here it is, http://www.webmasterworld.com/forum13/1223.htm
-
July 27th, 2002, 04:26 PM
#3
Ok, Thanks for that help but now thee is another problem..... Ive assigned a variable to page ($page) but whenever I try to access the page to test it it says
Code:
Forbidden
You don't have permission to access /$_GET["page"] on this server.
--------------------------------------------------------------------------------
Apache/1.3.26 Server at localhost Port 1337
My code is as follows:
PHP Code:
<?php
$page = header('location: $_GET["page"]');
if ($page = 1)
print "www.antionline.com";
?>
Is there an easier way to see what variabe is out into the script then act on it?
-
July 27th, 2002, 04:34 PM
#4
-
July 27th, 2002, 04:45 PM
#5
You're trying to mix two functions together, acid.
The header('location: page') funcition redirects the browser to another page.
in the array $_GET are the variables you included in the url.
So, the correct version of that script would be:
PHP Code:
<?php
$page = $_GET["page"]; // this reads the variable "page" in the array $_GET
if ($page == 1) {
// do the page one stuff here
}
?>
Instead of the if-statement, you might want to use the switch/case statement
PHP Code:
<?php
$page = $_GET["page"]; // this reads the variable "page" in the array $_GET
switch ($page) {
case 1:
// do the page one stuff here
break;
case 2:
// page two stuff
break;
case 3:
// page three stuff
break;
case default:
// do stuff you need to do when an unexpected value is found
}
?>
Oh, and by the way: $HTTP_POST_VARS and $HTTP_GET_VARS are deprecated. Use $_POST and $_GET instead.
You can find a bunch of information on the php.net website. Here's a link to their manual: http://www.php.net/manual/
I wish to express my gratitude to the people of Italy. Thank you for inventing pizza.
-
July 28th, 2002, 01:32 AM
#6
Guus, How can I get the content to be redirected.... say the content I want for page 1 is perl.pdf... How can I redirect to that
-
July 28th, 2002, 01:48 AM
#7
Try this:
PHP Code:
<?php
$page = $_GET["page"]; // this reads the variable "page" in the array $_GET
switch ($page) {
case 1:
header( "Content-Type: text/plain" );
readfile( "firstfile.txt" );
break;
case 2:
header( "Content-Type: text/html" );
readfile( "secondfile.html" );
break;
case 3:
header( "Content-Type: audio/x-wav" );
readfile( "third.wav" );
break;
case 4:
header( "Content-Type: application/pdf" );
readfile( "perl.pdf" );
break;
case default:
header( "Content-Type: text/html" );
readfile( "home.html" );
}
?>
I never actually used this myself, but I'm pretty sure it'll work (save some syntax errors).
Hmmz, I was reading up a bit on php security, sql injection, and other stuff I could find, and I came across this tutorial by chsH. If I understand him correctly, you could filter out all unwanted characters by using the preg_replace() call.
To make sure the variables you GET from your url only include numbers, you could change the line that now reads:
PHP Code:
$page = $_GET["page"];
in:
PHP Code:
$page = preg_replace("/[^0-9]/","",$_GET["page"]);
You could also add some length-checking, makeing sure your variables don't include more than a couple of numbers. Read chsh's thread for more information.
I wish to express my gratitude to the people of Italy. Thank you for inventing pizza.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
|