Avatar billede smeier Nybegynder
16. august 2004 - 12:27 Der er 31 kommentarer og
1 løsning

Notice: Undefined index: submit in

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


Hvordan fjerner jeg ovenstående fejl bedst?
Hvis jeg ændrer $submit til $_POST["submit"] for jeg fejlen
Notice: Undefined index: submit in c:\programmer\easyphp1-7\www\spillesteder\admin\login.php on line 11

Linjen hedder:

if  ($submit == "login") {  <--- line 11
    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 = '';
}
Avatar billede dennismp Nybegynder
16. august 2004 - 12:30 #1
if( isset($_POST['submit']) && $_POST['submit'] == 'login' )
Avatar billede dennismp Nybegynder
16. august 2004 - 12:31 #2
eller måske lidt nemmere.

if( isset($_POST['submit']) )
  $submit = $_POST['submit'];
else
  $submit = '';

if( $submit == '' ) {
.. osv
}
Avatar billede smeier Nybegynder
16. august 2004 - 12:40 #3
thanx! Når jeg trykker på submit får jeg følgende fejl, kan du se hvorfor?
HVis du kigger i min første spgm kan du se linje 12 og 13.

ellers kan du bare smide et svar for points.

Notice: Undefined index: username in c:\programmer\easyphp1-7\www\spillesteder\admin\login.php on line 12

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

Fatal error: Call to undefined function: () in c:\programmer\easyphp1-7\www\spillesteder\admin\login.php on line 13
Avatar billede dennismp Nybegynder
16. august 2004 - 12:44 #4
Det er samme problem. Din $_POST variable indeholder ikke nogen "username" eller "password" element. Så den brokker sig. Så du kan gøre det samme som ved submit.

Den sidste fejl:
$feedback = $user_login();

jeg tror du mener:
$feedback = user_login();

($ fjernet)
Avatar billede smeier Nybegynder
16. august 2004 - 12:50 #5
kan du lave et eksempel på hvordan du gør det. Har gjort mit forsøg med den brokker sig endnu mere.
og smid lige et svar i samme vending.
Avatar billede dennismp Nybegynder
16. august 2004 - 12:57 #6
Joda, prøv lige at forklare med egne ord, hvad du prøver at få den til. Er det "bare" en login form?
Avatar billede smeier Nybegynder
16. august 2004 - 13:04 #7
Dette er 'bare' en login form. Med en tilhørende fil.
Jeg har bare fucked det helt op....
login.php-->

<?php

require_once('login_funcs.inc');

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

if( isset($_POST['submit']) && $_POST['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;
?>
-------------------------------------------------------------------------------

login_funcs.inc-->
<?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 (isset($_COOKIE['user_name']) && isset($_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 dennismp Nybegynder
16. august 2004 - 13:26 #8
Jeg har næsten voldtaget dit script. Men prøv at se om du ikke kan bruge det.. (koden er utestet)

// Return-koder
define('ACCT_OK', 0 );
define('ACCT_NOTCONFIRMED', 1);
define('ACCT_NOTNOTFOUNDORPWINCORRECT', 2);

// Input variablerne
if( isset($_POST['username']) )
  $username = $_POST['username'];
else
  $username = '';

if( isset($_POST['password']) )
  $password = $_POST['password'];
else
  $password = '';

// Besked til brugeren
$feedback_str = '';

if( !empty($username) && !empty($password) ) {
  $res = user_login($username,$password);

  switch($res) {
      case ACCT_OK:
        header("Location .. ");
        exit;
        break;

      case ACCT_NOTCONFIRMED:
        $feedback_str = 'ERROR--You may not have confirmed your account yet';
        break;

      case ACCT_NOTNOTFOUNDORPWINCORRECT:
        $feedback_str = 'ERROR--User not found or password incorrect';
        break;
  }
}
else {
  if( count($_POST) != 0 )  // Brugeren har trykket submit (eller return)
      $feedback_str = 'ERROR--Please supply username and password';
}

// vis html-form som før.


function user_login($username,$password) {
  $user_name = strtolower($username);
  $password = strtolower($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)
      return ACCT_NOTNOTFOUNDORPWINCORRECT;

  if (mysql_result($result, 0, 'is_confirmed') == '1') {
      user_set_tokens($user_name);
      return ACCT_OK;
  }
  else {
      return ACCT_NOTNOTFOUNDORPWINCORRECT;
    }
}

Måske skulle du bruger $_SESSION istedet for cookie - så risikere du ikke at de værdier du gemmer (nu i cookien) bliver ændret af brugeren.
Avatar billede smeier Nybegynder
16. august 2004 - 13:29 #9
går ud fra at require_once('login_funcs.inc'); stadig skal ligge i toppen?!?
Avatar billede dennismp Nybegynder
16. august 2004 - 13:32 #10
ja..

og dette skal også stadig med:

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

men ellers, kan du følge logikken?
Avatar billede dennismp Nybegynder
16. august 2004 - 13:32 #11
har desværre ikke testet det, så du får nok bøvl :)
Avatar billede smeier Nybegynder
16. august 2004 - 13:36 #12
Ja.  Det gør jeg.
Allersidste ting, så skal jeg ikke tage mere af din tid.

Fatal error: Cannot redeclare user_login() (previously declared in c:\programmer\easyphp1-7\www\spillesteder\admin\login.php:57) in c:\programmer\easyphp1-7\www\spillesteder\admin\login_funcs.inc on line 31

Hvordan reder jeg den ud? kan ikke regne det ud, uden at jeg fucker op.
Avatar billede dennismp Nybegynder
16. august 2004 - 13:42 #13
Det er bare fordi du har to funktioner der hedder user_login(). Prøv at udkommenter den i login_funcs.inc og så flytte den anden (fra login.php) derover..
Avatar billede smeier Nybegynder
16. august 2004 - 14:00 #14
Når jeg skriver den rigtigt id og kode og submitter sker der ingenting. Nogen ide til hva det kunne være?
ellers må jeg vel bare lede videre, eller åbne et nyt spg når jeg giver op ;)
Avatar billede dennismp Nybegynder
16. august 2004 - 14:05 #15
sker der noget, hvis du skriver forkert id/kode ?
Avatar billede smeier Nybegynder
16. august 2004 - 14:07 #16
nej
Avatar billede smeier Nybegynder
16. august 2004 - 14:07 #17
sorry. Ja, den kommer med rigtigt fejlmeddelses
Avatar billede smeier Nybegynder
16. august 2004 - 14:08 #18
det er kun når jeg trykker rigtigt, så vidt jeg kan se.
Avatar billede dennismp Nybegynder
16. august 2004 - 14:16 #19
Du skal nok rette denne:
header("Location .. ");
til at være noget "rigtigt" .. fx

header("Location: index.php");

prøv at se om det hjælper
Avatar billede smeier Nybegynder
16. august 2004 - 14:21 #20
har jeg prøvet. Hjælper ikke.
Avatar billede dennismp Nybegynder
16. august 2004 - 14:25 #21
prøv at skriv $res ud; (ligefør switch($res))
Avatar billede smeier Nybegynder
16. august 2004 - 14:30 #22
Sker ingenting hvis jeg ellers har gjort det rigtigt..

if( !empty($username) && !empty($password) ) {
  $res = user_login($username,$password);
  echo $res;  <---- 

  switch($res) {
      case ACCT_OK:
        header("location; index.php");
        exit;
        break;
Avatar billede dennismp Nybegynder
16. august 2004 - 14:49 #23
prøv at rette det til
echo "res=$res<br>";

står der så

res= et eller andet sted på siden?
Avatar billede smeier Nybegynder
16. august 2004 - 14:53 #24
ingenting overhovedet
Avatar billede dennismp Nybegynder
16. august 2004 - 15:03 #25
og du fylder noget i både username og password?

Prøv lige at paste din kode engang.
Avatar billede smeier Nybegynder
16. august 2004 - 15:09 #26
Login.php......


<?php

require_once('login_funcs.inc');


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

// Return-koder
define('ACCT_OK', 0 );
define('ACCT_NOTCONFIRMED', 1);
define('ACCT_NOTNOTFOUNDORPWINCORRECT', 2);

// Input variablerne
if( isset($_POST['username']) )
  $username = $_POST['username'];
else
  $username = '';

if( isset($_POST['password']) )
  $password = $_POST['password'];
else
  $password = '';

// Besked til brugeren
$feedback_str = '';

if( !empty($username) && !empty($password) ) {
  $res = user_login($username,$password);
 
echo "res=$res<br>";

  switch($res) {
      case ACCT_OK:
        header("location; index.php");
        exit;
        break;

      case ACCT_NOTCONFIRMED:
        $feedback_str = 'ERROR--You may not have confirmed your account yet';
        break;

      case ACCT_NOTNOTFOUNDORPWINCORRECT:
        $feedback_str = 'ERROR--User not found or password incorrect';
        break;
  }
}
else {
  if( count($_POST) != 0 )  // Brugeren har trykket submit (eller return)
      $feedback_str = 'ERROR--Please supply username and password';
}

// vis html-form som før.

$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 smeier Nybegynder
16. august 2004 - 15:09 #27
login_funcs.inc......


<?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 (isset($_COOKIE['user_name']) && isset($_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_login($username,$password) {
  $user_name = strtolower($username);
  $password = strtolower($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)
      return ACCT_NOTNOTFOUNDORPWINCORRECT;

  if (mysql_result($result, 0, 'is_confirmed') == '1') {
      user_set_tokens($user_name);
      return ACCT_OK;
  }
  else {
      return ACCT_NOTNOTFOUNDORPWINCORRECT;
    }
}

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 dennismp Nybegynder
16. august 2004 - 15:42 #28
prøv at tilføje øverst i dit script: print_r($_POST);
Avatar billede smeier Nybegynder
16. august 2004 - 15:46 #29
Array ( [user_name] => spillestederdk [password] => spillestederdk [submit] => login )

Ovenstående kom frem på siden.
Avatar billede dennismp Nybegynder
16. august 2004 - 15:47 #30
name på din username form, skal være username (ikke user_name) .. eller også skal du rette koden så
$_POST['username'] bliver til $_POST['user_name'];
Avatar billede smeier Nybegynder
16. august 2004 - 15:51 #31
Jeg retter det senere. Nu gider jeg simpelthen ikke mere. Men mange tak fordi jeg måtte tage din tid.
Avatar billede dennismp Nybegynder
16. august 2004 - 15:58 #32
Du er velkommen til at forsætte her, hvis du ikke kan få det til at makke ret.
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