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 = ''; }
Annonceindlæg fra Computerworld
16. august 2004 - 12:30
#1
if( isset($_POST['submit']) && $_POST['submit'] == 'login' )
16. august 2004 - 12:31
#2
eller måske lidt nemmere. if( isset($_POST['submit']) ) $submit = $_POST['submit']; else $submit = ''; if( $submit == '' ) { .. osv }
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
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)
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.
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?
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); } ?>
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.
16. august 2004 - 13:29
#9
går ud fra at require_once('login_funcs.inc'); stadig skal ligge i toppen?!?
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?
16. august 2004 - 13:32
#11
har desværre ikke testet det, så du får nok bøvl :)
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.
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..
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 ;)
16. august 2004 - 14:05
#15
sker der noget, hvis du skriver forkert id/kode ?
16. august 2004 - 14:07
#16
nej
16. august 2004 - 14:07
#17
sorry. Ja, den kommer med rigtigt fejlmeddelses
16. august 2004 - 14:08
#18
det er kun når jeg trykker rigtigt, så vidt jeg kan se.
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
16. august 2004 - 14:21
#20
har jeg prøvet. Hjælper ikke.
16. august 2004 - 14:25
#21
prøv at skriv $res ud; (ligefør switch($res))
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;
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?
16. august 2004 - 14:53
#24
ingenting overhovedet
16. august 2004 - 15:03
#25
og du fylder noget i både username og password? Prøv lige at paste din kode engang.
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; ?>
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); } ?>
16. august 2004 - 15:42
#28
prøv at tilføje øverst i dit script: print_r($_POST);
16. august 2004 - 15:46
#29
Array ( [user_name] => spillestederdk [password] => spillestederdk [submit] => login ) Ovenstående kom frem på siden.
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'];
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.
16. august 2004 - 15:58
#32
Du er velkommen til at forsætte her, hvis du ikke kan få det til at makke ret.
Vi tilbyder markedets bedste kurser inden for webudvikling