t0ze Posted September 27, 2012 at 11:13 AM Report #476755 Posted September 27, 2012 at 11:13 AM Bom dia, Desculpem desde já a minha noobice, é que estou aqui "bloqueado" com uma situação que tem a ver com o assunto do tópico, e não tenho ninguem com quem discutir este assunto: O comportamento bizarro é; credenciais inválidas: entra no if (isset($_POST['submit'])) e faz a validação e dá mensagem de erro "credenciais inválidas". credenciais válidas: nem entra no if. Já não sei o q fazer =( include_once("includes/form_functions.php"); echo $_SESSION['user_id']; // START FORM PROCESSING if (isset($_POST['submit'])) { // Form has been submitted. $errors = array(); // perform validations on the form data $required_fields = array('username', 'password'); $errors = array_merge($errors, check_required_fields($required_fields, $_POST)); $fields_with_lengths = array('username' => 30, 'password' => 30); $errors = array_merge($errors, check_max_field_lengths($fields_with_lengths, $_POST)); $username = trim(mysql_prep($_POST['username'])); $password = trim(mysql_prep($_POST['password'])); $hashed_password = sha1($password); if ( empty($errors) ) { // Check database to see if username and the hashed password exist there. $query = "SELECT user_id, username, name, user_lang, isadmin "; $query .= "FROM user "; $query .= "WHERE username = '{$username}' "; $query .= "AND password = '{$hashed_password}' "; $query .= "AND isactive = '1' "; $query .= "LIMIT 1"; echo $query; $result_set = mysql_query($query); confirm_query($result_set); if (mysql_num_rows($result_set) == 1) { // username/password authenticated //and only 1 match $found_user = mysql_fetch_array($result_set); $_SESSION['user_id'] = $found_user['id']; $_SESSION['username'] = $found_user['username']; $_SESSION['name'] = $found_user['name']; $_SESSION['user_lang'] = $found_user['user_lang']; $_SESSION['isadim'] = $found_user['isadmin']; redirect_to("index.php"); } else { // username/password combo was not found in the database $message = "Username/password combination incorrect.<br /> Please make sure your caps lock key is off and try again."; } } else { if (count($errors) == 1) { $message = "There was 1 error in the form."; } else { $message = "There were " . count($errors) . " errors in the form.";} } }else{ // Form has not been submitted. if(isset($_GET['logout']) == 1){$message = "You are now logged out.";echo "nao validou"; }else{$username = ""; $password = "";} } ?> <?php include("includes/header.php"); ?> </div> <div style="background-color:#F6F6F0; border: 15px solid #FFFFFF; margin: 0 auto; overflow: hidden; padding: 10px 20px 20px; width:300px; "> <div style="padding:0; text-align: left; width:100%;"> <h1>Administration</h1> <?php if (!empty($message)) {echo "<p class=\"message\">" . $message . "</p>";} ?> <?php if (!empty($errors)) { display_errors($errors); } ?> <form action="login.php" method="post"> <div class="form_settings"> <span><?php echo $lang[$default]['tbloginusername'];?></span><br> <input type="text" name="username" maxlength="30" value="<?php echo htmlentities($username); ?>" /><br> <br> <span><?php echo $lang[$default]['tbloginuserpassword'] ; ?></span><br> <input type="password" name="password" maxlength="30" value="<?php echo htmlentities($password); ?>" /><br> <br> <input class="submit" type="submit" name="submit" value="Login" /> <br> <div align="center" ><a href="user.php">registar </a> | <a href="recover_pass.php">Recuperar Password</a></div>
HappyHippyHippo Posted September 27, 2012 at 11:25 AM Report #476761 Posted September 27, 2012 at 11:25 AM 1º - indenta o código 2º - us a tag do geshi [ code = php ] (sem os espaços) para se poder ler melhor 3º - em que if não entra ? eu vejo ai uma porrada deles IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
t0ze Posted September 27, 2012 at 11:52 AM Author Report #476766 Posted September 27, 2012 at 11:52 AM (edited) Não entra no if isset($_POST['submit']) <?php include_once("includes/form_functions.php"); // START FORM PROCESSING if (isset($_POST['submit'])) { // Form has been submitted. $errors = array(); // perform validations on the form data $required_fields = array('username', 'password'); $errors = array_merge($errors, check_required_fields($required_fields, $_POST)); $fields_with_lengths = array('username' => 30, 'password' => 30); $errors = array_merge($errors, check_max_field_lengths($fields_with_lengths, $_POST)); $username = trim(mysql_prep($_POST['username'])); $password = trim(mysql_prep($_POST['password'])); $hashed_password = sha1($password); if ( empty($errors) ) { // Check database to see if username and the hashed password exist there. $query = "SELECT user_id, username, name, user_lang, isadmin "; $query .= "FROM user "; $query .= "WHERE username = '{$username}' "; $query .= "AND password = '{$hashed_password}' "; $query .= "AND isactive = '1' "; $query .= "LIMIT 1"; echo $query; $result_set = mysql_query($query); confirm_query($result_set); if (mysql_num_rows($result_set) == 1) { // username/password authenticated //and only 1 match $found_user = mysql_fetch_array($result_set); $_SESSION['user_id'] = $found_user['id']; $_SESSION['username'] = $found_user['username']; $_SESSION['name'] = $found_user['name']; $_SESSION['user_lang'] = $found_user['user_lang']; $_SESSION['isadim'] = $found_user['isadmin']; redirect_to("index.php"); }else{ // username/password combo was not found in the database $message = "Username/password combination incorrect.<br /> Please make sure your caps lock key is off and try again."; } }else{ if (count($errors) == 1) { $message = "There was 1 error in the form."; } else { $message = "There were " . count($errors) . " errors in the form.";} } } // Form has not been submitted. $username; $password; if(isset($_GET['logout']) == 1) {$message = "You are now logged out."; $username = ""; $password = "";} else{$username = ""; $password = "";} ?> <?php include("includes/header.php"); ?> </div> <div style="background-color:#F6F6F0; border: 15px solid #FFFFFF; margin: 0 auto; overflow: hidden; padding: 10px 20px 20px; width:300px; "> <div style="padding:0; text-align: left; width:100%;"> <h1>Administration</h1> <?php if (!empty($message)) {echo "<p class=\"message\">" . $message . "</p>";} ?> <?php if (!empty($errors)) { display_errors($errors); } ?> <form action="login.php" method="post"> <div class="form_settings"> <span><?php echo $lang[$default]['tbloginusername'];?></span><br> <input type="text" name="username" maxlength="30" value="<?php echo htmlentities($username); ?>" /><br> <br> <span><?php echo $lang[$default]['tbloginuserpassword'] ; ?></span><br> <input type="password" name="password" maxlength="30" value="<?php echo htmlentities($password); ?>" /><br> <br> <input class="submit" type="submit" name="submit" value="Login" /> <br> <div align="center" ><a href="user.php">registar </a> | <a href="recover_pass.php">Recuperar Password</a></div> </div> </form> </div> </div> <?php require("includes/footer.php"); ?> <?php include("includes/credits.php"); ?> Edited September 27, 2012 at 12:42 PM by t0ze
brunoais Posted September 27, 2012 at 12:38 PM Report #476769 Posted September 27, 2012 at 12:38 PM Quando colo perde a indentação =( Ah pois... Eu conheço isso... Usa o editor de texto normal (botão mais à esquerda mais em cima no editor. Parece um botão como os antigos para ligar e desligar a luz). Depois colas o código entre as tags code. o IP.B tem isto como editor WYSIWYG. Se queriam um, deviam de ter usado um como deve ser! 1 Report "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
HappyHippyHippo Posted September 27, 2012 at 01:21 PM Report #476772 Posted September 27, 2012 at 01:21 PM a indentação não é claramente a das melhores, até é bem fraquinha. a única coisa que o código apresenta para não entrar no primeiro if é a variável $_POST. altera o código desta maneira e diz que informação foi apresentada: print_r($_POST); if (isset($_POST['submit'])) { // Form has been submitted. echo "<br />\nif was successfull<br />\n"; IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
t0ze Posted September 27, 2012 at 01:43 PM Author Report #476775 Posted September 27, 2012 at 01:43 PM fazendo o teste e usando credenciais erradas para o user admin Array ( [username] => admin [password] => 123456 [submit] => Login ) fazendo o teste e usando credenciais correctas Array ( )
HappyHippyHippo Posted September 27, 2012 at 01:51 PM Report #476776 Posted September 27, 2012 at 01:51 PM (edited) o problema ou está na maneira como estás a carregar a página, como estás a testar com a informação correcta ou em código carregado antes do código apresentado aqui. por outras palavras : ou és tu ou é algo que não apresentaste se tiveres isso online disponibiliza o url assim como informação para testar ok, já vi online o comportamento não tem nada de bizarro. o erro está claramente em código que não foi apresentado. o código de login está correcto e sem problemas. tem é de verificar o processo de sessão (inicialização/recuperação). o que está a acontecer é que ao colocar a informação de autenticação correcta, o script de validação de utilizador é executado sem problemas redireccionando no final para o index.php. o problema é que nessa página, de alguma forma não está a conseguir verificar a informação de sessão e volta a redireccionar para o login.php. é essa a razão porque quando inseres a informação correcta, o array de $_POST aparece vazio. Edited October 3, 2012 at 07:43 AM by brunoais 2x post junto (posts com 30 mins de diferença) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
t0ze Posted September 27, 2012 at 02:27 PM Author Report #476780 Posted September 27, 2012 at 02:27 PM Muito muito obr, eu não estava a fazer ideia de onde estava a vir o erro. Agora vou me focar no include das sessions. na pagina de index tinha a função confirm_logged_in(); que me estava a enviar para o login de novo. <?php session_start(); function logged_in(){ return isset($_SESSION['user_id']); return isset($_SESSION['user_lang']); return isset ($_SESSION['username']); return isset ($_SESSION['name']); return isset ($_SESSION['isadim']); } function confirm_logged_in(){ if(!logged_in()){ redirect_to("login.php"); } } ?>
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now