Avatar billede smeier Nybegynder
16. august 2004 - 10:36 Der er 18 kommentarer og
1 løsning

Parse error

Har følgende kode. fejlen siger parse error - og jeg har endnu engang set mig blind på det.  Håber at nogle kan hjælpe!

<?php

include_once('db_vars.inc');

$supersecret_hash_padding = 'A string that is used to pad out short strings for md5 encryption';

$LOGGED_IN = false;
unset($LOGGED_IN);

function user_isloggedin() {
global $supersecret_hash_padding, $LOGGED_IN;

if (isSet($LOGGED_IN)) {
    return $LOGGED_IN;
    }

if ($_COOKIE['user_name'] && $_COOKIE['id_hash']) {
    $hash = md5($_COOKIE['user_name']
        .$supersecret_hash_padding);
    if ($hash == $_COOKIE['id_hash']) {
        return true;
    } else {
        return false;
    }
} else {
return false;
}
}

function user_login() {
if (!$_POST['user_name'] || !$_POST['password']) {
$feedback = 'ERROR--Missing username or password';
return $feedback;
} else {
$user_name = strtolower($_POST['username']);

$password = strtolower($_POST['password']);
$crypt_pwd = md5($password);
$query = "SELECT user_name, is_confirmed
        FROM login
        WHERE user_name = '$user_name'
        AND password='$crypt_pwd'";
$result = mysql_query($query);
if (!$result || mysql_num_rows($result) < 1){
$feedback = 'ERROR--User not found or password incorrect';
return feedback;
} else {
if (mysql_result($result, 0, 'is_confirmed') == '1') {
user_set_tokens($user_name);
return 1;
} else {
$feedback = 'ERROR--You may not have confirmed your account yet';
return $feedback;
}
}
}
}


function user_logout() {
setcookie('user_name', '', (time()+2592000), '/', '', 0);
setcookie('id_hash', '', (time()+2592000), '/', '', 0);
}

function user_set_tokens($user_name_in) {
global $supersecret_hash_padding;
if (!$user_name_in) {
$feedback = 'ERROR--No username';
return false;
}
$user_name = strtolower(user_name_in);
$id_hash = md5($user_name.$supersecret_hash_padding);

setcookie('user_name', $user_name, (time()+2592000), '/', '', 0);
setcookie('id_hash', $id_hash, (time()+2592000), '/', '', 0);

?>
Avatar billede morteeart Nybegynder
16. august 2004 - 10:40 #1
det ville nok være nemmest hvis du postede hele fejlmeddelsen. Den indeholder typisk et linje nummer.
Avatar billede iss Novice
16. august 2004 - 10:40 #2
function user_set_tokens($user_name_in) {
global $supersecret_hash_padding;
if (!$user_name_in) {
$feedback = 'ERROR--No username';
return false;
}

I dette mangler der med garanti en }
Avatar billede iss Novice
16. august 2004 - 10:41 #3
Til din egen hjælp, lav rigtige indryk, det gør det meget nemmere....
Avatar billede morteeart Nybegynder
16. august 2004 - 10:48 #4
okay, checkede scriptet med en cmd.
iis's har faktisk ret, det er bare en } som mangler.


// im out.
Avatar billede smeier Nybegynder
16. august 2004 - 10:54 #5
nu poster jeg hele lortet.
-->iss har forsøgt { men det hjælper ikke. og ja jeg burde rykke ind, men er elendig til det.

fejlmeddelsen:
Parse error: parse error, unexpected $end in c:\programmer\easyphp1-7\www\spillesteder\admin\login_funcs.inc on line 79


Notice: Undefined index: user_name in c:\programmer\easyphp1-7\www\spillesteder\admin\login_funcs.inc on line 17

Notice: Undefined variable: submit in c:\programmer\easyphp1-7\www\spillesteder\admin\login.php on line 11

scriptet før var fra filen login_funcs.inc
Avatar billede smeier Nybegynder
16. august 2004 - 10:55 #6
Her er den tilhørende fil --> login.php

Håber virkelig at i kan hjælpe.


<?php

require_once('login_funcs.inc');

if ($LOGGED_IN = user_isloggedin()) {
user_logout();
$_COOKIE['user_name'] = '';
unset($LOGGED_IN);
}

if ($submit == 'login') {
if (strlen($_POST['username']) <= 25 && strlen($_POST['password']) <= 25) {
$feedback = $user_login();
} else {
$feedback = 'ERROR--Username or password are to long';
}
if ($feedback == 1) {
header("location; index.php");
} else {
$feedback_str = "<P class=\"errormess\">$feedback</P>";
}
} else {
$feedback_str = '';
}




$php_self = $_SERVER['PHP_SELF'];

$login_form = <<< EOLOGINFORM
<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0 ALIGN=Center Width=621>
<tr>
<td rowspan=2></td></tr>
<tr>
<td>
$feedback_str
<p class="bold">LOGIN</P>
<form action="$php_self" method="post">
<p class="bold">Username<BR>
<input type="text" name="user_name" value="" size="15" maxlength="20"></p>
<p class="bold">password<br>
<input type="password" name="password" value="" size="15" maxlength="20"></p>
<p><input type="submit" name="submit" value="login"></p>
</form>
</td>
</tr>
</table>
EOLOGINFORM;
echo $login_form;
?>
Avatar billede iss Novice
16. august 2004 - 11:03 #7
Hvis du har sat en { så er det 2 } for lidt.....
Avatar billede smeier Nybegynder
16. august 2004 - 11:06 #8
sorry... skrive fejl. Det var en } jeg satte..
Avatar billede iss Novice
16. august 2004 - 11:10 #9
<?php

include_once('db_vars.inc');

$supersecret_hash_padding = 'A string that is used to pad out short strings for md5 encryption';

$LOGGED_IN = false;
unset($LOGGED_IN);

function user_isloggedin() {
global $supersecret_hash_padding, $LOGGED_IN;

if (isSet($LOGGED_IN)) {
    return $LOGGED_IN;
}

if ($_COOKIE['user_name'] && $_COOKIE['id_hash']) {
    $hash = md5($_COOKIE['user_name'].$supersecret_hash_padding);
    if ($hash == $_COOKIE['id_hash']) {
        return true;
    }
    else {
        return false;
    }
}
else {
    return false;
}

} // **** Den er vist i overskud

function user_login() {
    if (!$_POST['user_name'] || !$_POST['password']) {
        $feedback = 'ERROR--Missing username or password';
        return $feedback;
    }
    else {
        $user_name = strtolower($_POST['username']);
        $password = strtolower($_POST['password']);
        $crypt_pwd = md5($password);
        $query = "SELECT user_name, is_confirmed
        FROM login
        WHERE user_name = '$user_name'
        AND password='$crypt_pwd'";
        $result = mysql_query($query);
        if (!$result || mysql_num_rows($result) < 1){
            $feedback = 'ERROR--User not found or password incorrect';
            return feedback;
        }
        else {
            if (mysql_result($result, 0, 'is_confirmed') == '1') {
            user_set_tokens($user_name);
            return 1;
            }
            else {
                $feedback = 'ERROR--You may not have confirmed your account yet';
                return $feedback;
            }
        }
    }
}


function user_logout() {
    setcookie('user_name', '', (time()+2592000), '/', '', 0);
    setcookie('id_hash', '', (time()+2592000), '/', '', 0);
}

function user_set_tokens($user_name_in) {
    global $supersecret_hash_padding;
    if (!$user_name_in) {
        $feedback = 'ERROR--No username';
        return false;
    }
    $user_name = strtolower(user_name_in);
    $id_hash = md5($user_name.$supersecret_hash_padding);

    setcookie('user_name', $user_name, (time()+2592000), '/', '', 0);
    setcookie('id_hash', $id_hash, (time()+2592000), '/', '', 0);

// Her mangler en }

?>
Avatar billede iss Novice
16. august 2004 - 11:10 #10
<?php

require_once('login_funcs.inc');

if ($LOGGED_IN = user_isloggedin()) {
    user_logout();
    $_COOKIE['user_name'] = '';
    unset($LOGGED_IN);
}

if ($submit == 'login') {
    if (strlen($_POST['username']) <= 25 && strlen($_POST['password']) <= 25) {
        $feedback = $user_login();
    }
    else {
        $feedback = 'ERROR--Username or password are to long';
    }
    if ($feedback == 1) {
        header("location; index.php");
    }
    else {
        $feedback_str = "<P class=\"errormess\">$feedback</P>";
    }
}
else {
    $feedback_str = '';
}

$php_self = $_SERVER['PHP_SELF'];

$login_form = <<< EOLOGINFORM
<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0 ALIGN=Center Width=621>
<tr>
<td rowspan=2></td></tr>
<tr>
<td>
$feedback_str
<p class="bold">LOGIN</P>
<form action="$php_self" method="post">
<p class="bold">Username<BR>
<input type="text" name="user_name" value="" size="15" maxlength="20"></p>
<p class="bold">password<br>
<input type="password" name="password" value="" size="15" maxlength="20"></p>
<p><input type="submit" name="submit" value="login"></p>
</form>
</td>
</tr>
</table>
EOLOGINFORM;
echo $login_form;
?>
Avatar billede iss Novice
16. august 2004 - 11:11 #11
Så let bliver det med indryk.
Avatar billede iss Novice
16. august 2004 - 11:16 #12
Sorry den } var ikke i overskud:
function user_isloggedin() {
    global $supersecret_hash_padding, $LOGGED_IN;

    if (isSet($LOGGED_IN)) {
        return $LOGGED_IN;
    }

    if ($_COOKIE['user_name'] && $_COOKIE['id_hash']) {
        $hash = md5($_COOKIE['user_name'].$supersecret_hash_padding);
        if ($hash == $_COOKIE['id_hash']) {
            return true;
        }
        else {
            return false;
        }
    }
    else {
        return false;
    }
}
Avatar billede smeier Nybegynder
16. august 2004 - 11:20 #13
Tak for indrykningen iss :)
Men den siger stadig samme fejl. Kan ikke regne den ud. Måske skal fejlen findes et andet sted eller?
Avatar billede iss Novice
16. august 2004 - 11:27 #14
Hvilken fejl? copy paste ud fra det jeg sendte dig.
Avatar billede smeier Nybegynder
16. august 2004 - 11:31 #15
Sorry min ven. Havde gjort det, men gemte filen som 'login_funcs.php' istedet for inc. Men mange tak for hjælpen.
En sidste ting, ved du hvordan jeg kommer af med sådan to noticed?
Notice: Undefined index: user_name in c:\programmer\easyphp1-7\www\spillesteder\admin\login_funcs.inc on line 17

Notice: Undefined variable: submit in c:\programmer\easyphp1-7\www\spillesteder\admin\login.php on line 11

ellers kan du bare skrive et svar så for du points...
Avatar billede iss Novice
16. august 2004 - 11:33 #16
Det er fordi at der står if ($_COOKIE['user_name'] && $_COOKIE['id_hash']) istedet for if (isset($_COOKIE['user_name']) && isset($_COOKIE['id_hash'])) osv osv, man må ikke undersøge indhold af en variabel før man er sikker på den ikke er tom.

Men det er kun en notice, og for det meste laver PHP det man har tænkt sig.
Avatar billede smeier Nybegynder
16. august 2004 - 11:44 #17
hvordan for jeg fjernet den med submit?
Avatar billede iss Novice
16. august 2004 - 12:42 #18
if (isset($submit) && $submit == 'login')
Avatar billede Slettet bruger
16. august 2004 - 19:16 #19
NB! Det er ikke en god ide at kalde filer et_eller_andet.inc for hvis den så ligger i en mappe, som webserveren har adgang til, kan enhver læse den over nettet.

Du kan i stedet kalde den f.eks. login_funcs.php eller login_funcs.inc.php
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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