0

I have a PHP application with me, which was done by myself and a few of us. I have not coded much, but it worked well in the localhost. When I tried to upload it in our university web server, I had got this error.

Parse error unexpected :

This happened on this line. So I believe that PHP has to do something with respect to the previous line too. So I am adding the previous and next lines:

<?php
  session_start();
  $page = $_GET["page"] ?: "index"; // Error in this line!

The funny part is, this works on my WAMP Server locally, but it doesn't work in the university server. Is there any issue with the code?

4 Answers4

3

I believe the PHP in your University Web Server is very old or older than 5.3. This is a shorthand ternary operator and is supported by PHP versions 5.3 and above.

Workaround

$page = $_GET["page"] ? $_GET["page"] : "index";

Update: To remove the warning, where $_GET["page"] is not set, you can use:

$page = isset($_GET["page"]) ? $_GET["page"] : "index"; // Checks if $_GET["page"] exists, and then assigns it.

PHP 7 will allow to use this short syntax:

$page = $_GET["page"] ?? "index";

From the docs:

Since PHP 5.3, it is possible to leave out the middle part of the ternary operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise.

Sven
  • 66,463
  • 10
  • 102
  • 105
Praveen Kumar Purushothaman
  • 160,666
  • 24
  • 190
  • 242
0

Quoting from the PHP Docs

Since PHP 5.3, it is possible to leave out the middle part of the ternary operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise.

I suggest that your university should update their servers to a supported version of PHP

Mark Baker
  • 205,174
  • 31
  • 336
  • 380
  • Can't upgrade the university servers, sorry. But thanks, I got a workaround from Praveen. –  Oct 16 '15 at 20:31
0

The problem may be the version of PHP.

Maybe your PHP version local is higher than in your university server.

You must see in which version from PHP ?: works

Felipe Umpierre
  • 188
  • 2
  • 12
-1

If the syntax does not work on your server it might be that "short tags" are disabled in your PHP ini file.

Bak
  • 252
  • 1
  • 3
  • 11