开发者

Newbe PHP: I'm haveing trouble running simple example code

I'm trying to get some PHP example code to work on PHP version 5.3.4, Apache 2.2.17 on Windows.

The example says I need PHP 4.0 and above with CURL and contains:

<? 
$function = $_GET['function-if-exist'];
$test = "Test";
?>

<? =$test ?>

I don't understand why I'm getting the following errors:

  1. My PHP doesn't understand <? and wants <?PHP instead.
  2. My PHP doesn't like <? =$test ?> and wants something like <?PHP开发者_运维百科 echo $test ?>
  3. $function = $_GET['function-if-exist']; causes the error "Undefined index" but presumably works for the folks that developed it.

Can anyone help me understand why their code is not working for me?


1) <? is the "short tag". Most servers are configured to not allow short tags. This can be changed in php.ini.

2) Again, short tags. Also I think you can't have a space before the =, but the main problem is the short tags setting.

3) $_GET accesses the query string, so when loading your script you need myscript.php?function-if-exist=something


It is more ideal to check if the parameter is set before continuing to prevent errors being thrown, e.g.

if(isset($_GET['function-if-exist']))
{
    $functionexists = $_GET['function-if-exist'];
}


  1. the short tag notation is disabled in your php.ini
  2. you need to remove the space before your equal sign
  3. your _get array contains not the expected index, what url do you enter to access the page?


I don't understand why I'm getting the following errors:

My PHP doesn't understand

To be able to use short tags you will have to enable them via config ... http://www.tomjepson.co.uk/tutorials/35/enabling-short-tags-in-php.html

My PHP doesn't like and wants something like

Once you switch on the short tags you will be able to echo using ... important the equals signs must be touching the ? not variable.

$function = $_GET['function-if-exist']; causes the error "Undefined index" but presumably works for the folks that developed it.

The $_GET is populated according to what is in the url. To get a value in $_GET['function-if-exist'] the url accessing the script should be something like mydemo.php?function-if-exist=hello

Hope this helps you


Quick answers to 1 and 2 are enable the short_open_tag option into the php.ini file, for the last one is set the error_reporting to a less strict mode.

The reasons of not to adopt such measures are:

  • the short tag clashes with the xml declaration and is disabled on different host, if you need to manipulate xml or if you need to write portable code is better to resort to the long tag syntax. You lose the ability to echoing data with = but it is a small annoyance to me.

  • Warning and notices, as php forgive a lot the programmer for missing variables declaration are a blessing for debug. Keep then raised and you will address a lot of mispellings. Are you sure that function-if-exist is a correct index for your hash? I would check the index first the access them. If the index don't exists is a probable hint that something is going wrong with your code and you should check the reason of the missing.

  • Better to stop now, as anyone can write a book on this topic, and several ones already done ;)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜