Avatar billede jepper1992 Mester
19. april 2011 - 20:28 Der er 16 kommentarer og
2 løsninger

Fejl kode i login system med PHP

hey, jeg er ved at lave en hjemmeside og den skal have et login system. men når jeg har oploadet min side og prøver at komme ind til mit login system siger den
Parse error: syntax error, unexpected T_DNUMBER in /var/www/users/100029/habboplanet.privatezone.dk/login/dbc.php on line 31

koden er
<?php
/*************** PHP LOGIN SCRIPT V 2.3*********************
(c) Balakrishnan 2010. All Rights Reserved

Usage: This script can be used FREE of charge for any commercial or personal projects. Enjoy!

Limitations:
- This script cannot be sold.
- This script should have copyright notice intact. Dont remove it please...
- This script may not be provided for download except from its original site.

For further usage, please contact me.

/******************** MAIN SETTINGS - PHP LOGIN SCRIPT V2.1 **********************
Please complete wherever marked xxxxxxxxx

/************* MYSQL DATABASE SETTINGS *****************
1. Specify Database name in $dbname
2. MySQL host (localhost or remotehost)
3. MySQL user name with ALL previleges assigned.
4. MySQL password

Note: If you use cpanel, the name will be like account_database
*************************************************************/

define ("DB_HOST", "xxxxxx"); // set database host
define ("DB_USER", "xxxxxx"); // set database user
define ("DB_PASS","xxxxxxx"); // set database password
define ("DB_NAME","xxxxxx"); // set database name

$link = mysql_connect(host, brugernavn, kode) or die("Couldn't make connection.");
($db = mysql_select_db(database, $link) or die("Couldn't select database");

/* Registration Type (Automatic or Manual)
1 -> Automatic Registration (Users will receive activation code and they will be automatically approved after clicking activation link)
0 -> Manual Approval (Users will not receive activation code and you will need to approve every user manually)
*/
$user_registration = 1;  // set 0 or 1

define("COOKIE_TIME_OUT", 10); //specify cookie timeout in days (default is 10 days)
define('SALT_LENGTH', 9); // salt for password

//define ("ADMIN_NAME", "admin"); // sp

/* Specify user levels */
define ("ADMIN_LEVEL", 5);
define ("USER_LEVEL", 1);
define ("GUEST_LEVEL", 0);



/*************** reCAPTCHA KEYS****************/
$publickey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$privatekey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";


/**** PAGE PROTECT CODE  ********************************
This code protects pages to only logged in users. If users have not logged in then it will redirect to login page.
If you want to add a new page and want to login protect, COPY this from this to END marker.
Remember this code must be placed on very top of any html or php page.
********************************************************/

function page_protect() {
session_start();

global $db;

/* Secure against Session Hijacking by checking user agent */
if (isset($_SESSION['HTTP_USER_AGENT']))
{
    if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT']))
    {
        logout();
        exit;
    }
}

// before we allow sessions, we need to check authentication key - ckey and ctime stored in database

/* If session not set, check for cookies set by Remember me */
if (!isset($_SESSION['user_id']) && !isset($_SESSION['user_name']) )
{
    if(isset($_COOKIE['user_id']) && isset($_COOKIE['user_key'])){
    /* we double check cookie expiry time against stored in database */
   
    $cookie_user_id  = filter($_COOKIE['user_id']);
    $rs_ctime = mysql_query("select `ckey`,`ctime` from `users` where `id` ='$cookie_user_id'") or die(mysql_error());
    list($ckey,$ctime) = mysql_fetch_row($rs_ctime);
    // coookie expiry
    if( (time() - $ctime) > 60*60*24*COOKIE_TIME_OUT) {

        logout();
        }
/* Security check with untrusted cookies - dont trust value stored in cookie.        
/* We also do authentication check of the `ckey` stored in cookie matches that stored in database during login*/

    if( !empty($ckey) && is_numeric($_COOKIE['user_id']) && isUserID($_COOKIE['user_name']) && $_COOKIE['user_key'] == sha1($ckey)  ) {
          session_regenerate_id(); //against session fixation attacks.
   
          $_SESSION['user_id'] = $_COOKIE['user_id'];
          $_SESSION['user_name'] = $_COOKIE['user_name'];
        /* query user level from database instead of storing in cookies */   
          list($user_level) = mysql_fetch_row(mysql_query("select user_level from users where id='$_SESSION[user_id]'"));

          $_SESSION['user_level'] = $user_level;
          $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
         
      } else {
      logout();
      }

  } else {
    header("Location: login.php");
    exit();
    }
}
}



function filter($data) {
    $data = trim(htmlentities(strip_tags($data)));
   
    if (get_magic_quotes_gpc())
        $data = stripslashes($data);
   
    $data = mysql_real_escape_string($data);
   
    return $data;
}



function EncodeURL($url)
{
$new = strtolower(ereg_replace(' ','_',$url));
return($new);
}

function DecodeURL($url)
{
$new = ucwords(ereg_replace('_',' ',$url));
return($new);
}

function ChopStr($str, $len)
{
    if (strlen($str) < $len)
        return $str;

    $str = substr($str,0,$len);
    if ($spc_pos = strrpos($str," "))
            $str = substr($str,0,$spc_pos);

    return $str . "...";
}   

function isEmail($email){
  return preg_match('/^\S+@[\w\d.-]{2,}\.[\w]{2,6}$/iU', $email) ? TRUE : FALSE;
}

function isUserID($username)
{
    if (preg_match('/^[a-z\d_]{5,20}$/i', $username)) {
        return true;
    } else {
        return false;
    }
}   

function isURL($url)
{
    if (preg_match('/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i', $url)) {
        return true;
    } else {
        return false;
    }
}

function checkPwd($x,$y)
{
if(empty($x) || empty($y) ) { return false; }
if (strlen($x) < 4 || strlen($y) < 4) { return false; }

if (strcmp($x,$y) != 0) {
return false;
}
return true;
}

function GenPwd($length = 7)
{
  $password = "";
  $possible = "0123456789bcdfghjkmnpqrstvwxyz"; //no vowels
 
  $i = 0;
   
  while ($i < $length) {

   
    $char = substr($possible, mt_rand(0, strlen($possible)-1), 1);
     
   
    if (!strstr($password, $char)) {
      $password .= $char;
      $i++;
    }

  }

  return $password;

}

function GenKey($length = 7)
{
  $password = "";
  $possible = "0123456789abcdefghijkmnopqrstuvwxyz";
 
  $i = 0;
   
  while ($i < $length) {

   
    $char = substr($possible, mt_rand(0, strlen($possible)-1), 1);
     
   
    if (!strstr($password, $char)) {
      $password .= $char;
      $i++;
    }

  }

  return $password;

}


function logout()
{
global $db;
session_start();

if(isset($_SESSION['user_id']) || isset($_COOKIE['user_id'])) {
mysql_query("update `users`
            set `ckey`= '', `ctime`= ''
            where `id`='$_SESSION[user_id]' OR  `id` = '$_COOKIE[user_id]'") or die(mysql_error());
}           

/************ Delete the sessions****************/
unset($_SESSION['user_id']);
unset($_SESSION['user_name']);
unset($_SESSION['user_level']);
unset($_SESSION['HTTP_USER_AGENT']);
session_unset();
session_destroy();

/* Delete the cookies*******************/
setcookie("user_id", '', time()-60*60*24*COOKIE_TIME_OUT, "/");
setcookie("user_name", '', time()-60*60*24*COOKIE_TIME_OUT, "/");
setcookie("user_key", '', time()-60*60*24*COOKIE_TIME_OUT, "/");

header("Location: login.php");
}

// Password and salt generation
function PwdHash($pwd, $salt = null)
{
    if ($salt === null)    {
        $salt = substr(md5(uniqid(rand(), true)), 0, SALT_LENGTH);
    }
    else    {
        $salt = substr($salt, 0, SALT_LENGTH);
    }
    return $salt . sha1($pwd . $salt);
}

function checkAdmin() {

if($_SESSION['user_level'] == ADMIN_LEVEL) {
return 1;
} else { return 0 ;
}

}

?>

håber nogle kan hjælpe mig
Avatar billede erikjacobsen Ekspert
19. april 2011 - 20:36 #1
Du skal vel i steder for skrive

$link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection.");
Avatar billede jepper1992 Mester
19. april 2011 - 20:43 #2
det virkede tak for det.
men nu siger den fejl på linie 32.
Avatar billede jepper1992 Mester
19. april 2011 - 21:01 #3
det virkede ikke aligevælg, da jeg indskrev mine data, sagde den igen fejl på linie 31
Avatar billede erikjacobsen Ekspert
19. april 2011 - 21:25 #4
Hvordan ser det ud?
Avatar billede jepper1992 Mester
19. april 2011 - 21:29 #5
$link = mysql_connect(46.4.27.52,100029_admin,nxg66nca) or die("Couldn't make connection.");
($db = mysql_select_db(100029_login, $link) or die("Couldn't select database");
Avatar billede natas-dk Nybegynder
19. april 2011 - 21:35 #6
ja din database login oplysninger virker da fint..

du bør nok ikke poste  brugernavn/password og ip adr. på din base...
Avatar billede jepper1992 Mester
19. april 2011 - 21:36 #7
nej, det var ikke helt gennemtænk, men hvad kan problemet så være?
Avatar billede repox Seniormester
19. april 2011 - 21:39 #8
Måske du skulle sætte quotes rundt om dine strenge?
Altså:
$link = mysql_connect("46.4.27.52", "100029_admin", "nxg66nca") or die("Couldn't make connection.");
($db = mysql_select_db("100029_login", $link) or die("Couldn't select database");
Avatar billede repox Seniormester
19. april 2011 - 21:40 #9
Argh...
$link = mysql_connect("46.4.27.52", "100029_admin", "nxg66nca") or die("Couldn't make connection.");
($db = mysql_select_db("100029_login", $link) or die("Couldn't select database");
Avatar billede jepper1992 Mester
19. april 2011 - 21:44 #10
underligt nu virker linie 31, men nu sige den Parse error: syntax error, unexpected ';' on line 32
Avatar billede natas-dk Nybegynder
19. april 2011 - 21:46 #11
du mangler en )  på den linie

eller der er en ( for meget i starten af linien..

prøv at tjekke den originale kode... 

det ser ud til du har ændret lidt i den...

dine "" mangler er nok fordi du skulle have skrevet dine oplysninger ind i
***********
define ("DB_HOST", "xxxxxx"); // set database host
define ("DB_USER", "xxxxxx"); // set database user
define ("DB_PASS","xxxxxxx"); // set database password
define ("DB_NAME","xxxxxx"); // set database name
***********
Avatar billede natas-dk Nybegynder
19. april 2011 - 21:51 #12
p.s  du bør nok skifte password til din base...
Avatar billede jepper1992 Mester
19. april 2011 - 21:52 #13
hvis man skal skrive dem der, hvor skal man stå? Der hvor der står DB, eller der hvor der står xxxxxx?
Avatar billede jepper1992 Mester
19. april 2011 - 21:53 #14
og bare rolig ændre koden når det her virker
Avatar billede jepper1992 Mester
19. april 2011 - 21:56 #15
skulle ikke ændre noget i define, havde kommet til at skrive det ( for meget i starten af 2 linie. det virkede da jeg fjernede den.
Avatar billede jepper1992 Mester
19. april 2011 - 21:57 #16
nu virker det som det skal, tak for hjælpen :D.
Skriv svar så jeg kan lukke tråden :D
Avatar billede natas-dk Nybegynder
19. april 2011 - 22:52 #17
Repox skal også have del i æren.. han fandt den første fejl...
Avatar billede repox Seniormester
19. april 2011 - 23:57 #18
jeg hopper på, så...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester