Page 1 of 1

Unexpected T_VARIABLE on File Upload

PostPosted: 02. September 2016 20:54
by rich_web_dev
I installed xampp version 5.6.24 on my Windows 10 box today. I run the xampp control panel as admin and click on the red x's.
I just want to use the php code to upload photos. I copy and paste the examples given on the w3schools website at http://www.w3schools.com/php/php_file_upload.asp
The html file is as follows:

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

Then the upload.php is as follows:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
?>

These two files are saved in C:\xampp\htdocs. I have created a folder in the same place called 'uploads'. When I click the upload button I get the following error:
Parse error: syntax error, unexpected '$check' (T_VARIABLE) in C:\xampp\htdocs\upload.php on line 8

I use sublime text 3 and have also tried with note pad making sure I save files with UTF-8 encoding.
I've looked in the apache error logs and keep getting the following:
 
[Fri Sep 02 18:30:30.650622 2016] [ssl:warn] : www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Fri Sep 02 18:30:30.688379 2016] [mpm_winnt:notice]: Child: Starting 150 worker threads.
[Fri Sep 02 18:30:58.097000 2016] [:error] [pid:tid ] [client ::] PHP Parse error:  syntax error, unexpected '$check' (T_VARIABLE) in C:\\xampp\\htdocs\\upload.php on line 8, referer: http://localhost/PicTest.html

It's so annoying. It used to just work but now it just wont let me do what I want. It works with just basic examples from the w3schools PHP tutorial like:
 
<?php
$txt1 = "Learn PHP";
$txt2 = "W3Schools.com";
$x = 5;
$y = 4;

echo "<h2>$txt1</h2>";
echo "Study PHP at $txt2<br>";
echo $x + $y;
?>

Re: Unexpected T_VARIABLE on File Upload

PostPosted: 02. September 2016 23:37
by JJ_Tagy
Not sure if this is your problem, but you should use single quotes (') in POST[]

Re: Unexpected T_VARIABLE on File Upload

PostPosted: 03. September 2016 10:32
by rich_web_dev
Thanks. It's ok. I've got it working now. It was because I was copy and pasting the code. When I write the code out by hand it all works.

It's all working now!

Re: Unexpected T_VARIABLE on File Upload

PostPosted: 03. September 2016 12:25
by Nobbie
JJ_Tagy wrote:Not sure if this is your problem, but you should use single quotes (') in POST[]


Its not necessary to use single quotes, double quotes will work also.

The problem is the missing space between if-Clause and the following bracket:

if(isset($_POST["submit"])) {


Insert a space to fix it (but there are more invalid if-clauses later on):

if (isset($_POST["submit"])) {

Re: Unexpected T_VARIABLE on File Upload

PostPosted: 03. September 2016 13:24
by Altrea
The white space between if and the bracket is optional (like most of the whitespaces in front of brackets).
The php manual describe the statement including the whitespace.
And many php coding guidelines (if not all) are using the whitespace too.

But the code will work without this whitespace without throwing any notices.
It is just not so good to read.

Re: Unexpected T_VARIABLE on File Upload

PostPosted: 03. September 2016 16:08
by Nobbie
Obviously this is *NOT* the code which leads to the syntax error. I just copied & pasted it and it runs without severe error. The missing space was my only concern, but Altrea is right, thats only optional. In future it would be helpfull to show us the REAL code and not a modified pseudo code.