views:

426

answers:

7

Parse error: syntax error, unexpected $end in blah/blah/blah.php line 1

This is the error that I receive, with this code

<?php 
include("db.php");

if (isset($_POST['username']) && 
    isset($_POST['password']) && 
    isset($_POST['email']))
{
  //Prevent SQL injections
  $username = mysql_real_escape_string($_POST['username']);
  $email = mysql_real_escape_string($_POST['email']);

  //Get MD5 hash of password
  $password = md5($_POST['password']);

  //Check to see if username exists
  $sql = mysql_query("SELECT username FROM usersystem WHERE username = 'username'");

  if (mysql_num_rows($s > 0))
  {
    die ("Username taken.");
  }

  mysql_query("INSERT INTO usersystem (username, password, email) VALUES ( '$username', '$password', '$email')") 
    or die (mysql_error()); echo "Account created.";
}
?>

I've already checked for unclosed brackets, that's not the problem. Also by troubleshooting with it, I've discovered that the include("db.php"); is causing the problem. When I comment it out, It loads the page just fine. However even when db.php is completely blank, just an empty .php file it still gives me the same error. I'm perplexed. Anyone have any ideas?

here is my db.php file, but honestly when I make db.php completely blank I get the same error. And I am saving it correctly.

<?php
session_start();
mysql_connect("localhost", "mydatabase", "mypassword");
mysql_select_db("ratherda_jetpackfandango");

function user_login ($username, $password)
{
  //take the username and prevent SQL injections
  //$username = mysql_real_escape_string($username);

  //begin the query
  $sql = mysql_query("SELECT * FROM user WHERE username = 'username' AND password = 'password' LIMIT 1");

  //check to see how many rows were returned
  $rows = mysql_num_rows($sql);

  if ($rows<=0 )
  {
    echo "Incorrect username/password";
  }
  else
  {
    //have them logged in
    $_SESSION['username'] = $username;
  }    
}
?>
+2  A: 

Post your db.php file, the problem is obviously in there. Unexpected $end errors are usually a result of a missing curly brace, so check that file.

musicfreak
Beaten by 2 seconds. :(
apphacker
But he said that even when db.php is blank, he still gets an unexpected $end error…
htw
Unlikely. He's probably not editing the right file or saving it correctly.
apphacker
A: 

The error is in db.php, not this file.

apphacker
A: 

In php $end errors typically means a missing } brace somewhere.

Joseph Pecoraro
I understand that, But I've already checked for that. I used notepad++ and ever bracket is matched with a closing one.
Matt
A: 

Perhaps your blah.php file is included from another blahblah.php file, and the error is there?

Vilx-
A: 

Are you sure that it's your db.php that get included? Could it be another db.php somewhere in your php-paths that get included instead? One way to check this is to rename your file to something more unique.

Patjoh
+2  A: 

You have a session_start in db.php thats not allowed there. It should be the first line in blah.php.

<?php

session_start();

require_once("db.php");
MrHus
thank you, that solved many of my problems.
Matt
Just out of curiosity, why isn't it allowed there?
musicfreak
It's not illegal but having other lines above session start sometimes stops the cookie from being set. Depends on the server configuration as well. But always do it to be save, i've spend hours solving such issues. See the manual comments for more information.
MrHus
+2  A: 

if (mysql_num_rows($s > 0))

to

if (mysql_num_rows($s) > 0)

Don Wilson