Jump to content

[Resolvido] Não passa do login (JQuery, Ajax, PHP)


RuiAlmeida20
 Share

Recommended Posts

Boas tardes,

index.php.:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 $("#btn-login").click(function(){

   var username=$('#usrname').val();
   var password=$('#pw').val();

   $.ajax({
     type: "POST",
     url: "login_verify.php",
     data: "key=Ms1MG3iP2OJypjY1A3j5T9cYzWv6X974&submit=1&name="+username+"&pwd="+password,
     success: function(html){
       if(html=='true'){
         $("#sucess").html("<li><i class='fa-li fa fa-check-square'></i> Sucess");
       }
       else{
         $("#err").html("<i class='fa fa-ban'></i> Wrong username or password");
       }
     },
     beforeSend:function(){
       $("#err").html("<i class='fa fa-spinner fa-spin'></i> Loading...")
     }
   });
   return false;
 });
});
</script>
<!-- Analytics -->
<script type="text/javascript">
 var _gaq = _gaq || [];
 _gaq.push(['_setAccount', 'UA-31683991-1']);
 _gaq.push(['_setDomainName', 'portugal-a-programar.pt']);
 _gaq.push(['_trackPageview']);
 (function() {
   var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
   ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
   var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
 })();
</script>
<!-- /Analytics --></head>
<body>
<div id="loginform">
<div id="mainlogin">
<h1>Log in with awesome new thing</h1>
<form action="" method="post">
<div id="err"></div>
<div id="sucess"></div>
<input type="text" placeholder="username or email" id="usrname" value="" required>
<input type="password" placeholder="password" id="pw" value="" required>
<button type="submit" name="Login" id="btn-login"><i class="fa fa-arrow-right"></i></button>
</form>
<div id="note"><a href="#">Forgot your password?</a></div>
</div>
</body>
</html>

login_verify.php :

<?php
session_start();
$key = "Ms1MG3iP2OJypjY1A3j5T9cYzWv6X974";
if(isset($_GET['key']) && $_GET['key'] = "Ms1MG3iP2OJypjY1A3j5T9cYzWv6X974")
{
$con = mysqli_connect("localhost","","","") or die("Connection error: " . mysqli_error($con));

if(isset($_GET['submit']) && $_GET['submit'] = 1){
$username = $_POST['usrname'];
$password = $_POST['pwd'];

$stmt = $con->prepare("SELECT * FROM login_test WHERE usrname = ? AND pw = ? LIMIT 1");
$stmt->bind_param('ss', $username, $password);
$stmt->execute();
$stmt->bind_result($username, $password);
$stmt->store_result();
if($stmt->num_rows == 1)
{
if($stmt->fetch())
{
$_SESSION['Logged'] = 1;
$_SESSION['user_name'] = $username;
echo 'Access granted';
exit();
}
}
else {
echo "*Wrong username or password";
}
$stmt->close();
}
else
{  
echo 'Erro33';
}
$con->close();
}else{ echo 'Erro'; }
?>

Mesmo eu teha escrito os dados correctos, ele diz-me "Wrong username or password" alguém sabe porque ?

Edited by RuiAlmeida20
Link to comment
Share on other sites

Esse código tem imensos problemas, desde logo porque não retornas true em lado nenhum.

Fica aqui um exemplo simples, tenta adaptar.

$.ajax({
url: "login_verify.php",
type: "POST",
data: {key: 'Ms1MG3iP2OJypjY1A3j5T9cYzWv6X974', name: username, pwd: password}
success: function(data){
   var json = JSON.parse(data);
   console.log(json);
   // Acedes ao json da seguinte forma: json.type ou json.msg
}
});

Do lado do PHP, podes fazer algo do género:

$_key  = (isset($_REQUEST['key']) ? $_REQUEST['key'] : null);
$_user = (isset($_REQUEST['name']) ? $_REQUEST['name'] : null);
$_pass = (isset($_REQUEST['pwd']) ? $_REQUEST['pwd'] : null);
/* Fazes as validações que tens a fazer... */
$query = $con->prepare("SELECT id  FROM login_test WHERE usrname = ? AND pw = ?"); // o username deve ser único
/* Convém encriptares a senha.. */
$query->bind_param('ss', $_user, $_pass);
$query->execute();
$query->store_result();

$row = ($query->num_rows >= 1 ? true : false);

echo json_encode("type" => $row, "msg" => ($row == true ? 'Access Granted' : 'Wrong username or password'));

Fiz de cabeça mas em princípio será algo desse género.

Link to comment
Share on other sites

Olá de novo, formei este seguinte código:

index.php

<html>
<head>
<link rel="stylesheet prefetch" href="http://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css">
<link rel="stylesheet" href="css.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 $("#btn-login").click(function(){

var username=$('#usrname').val();
var password=$('#pw').val();
$.ajax({
	url: "login_verify.php",
	type: "POST",
	data: {key: 'Ms1MG3iP2OJypjY1A3j5T9cYzWv6X974', name: username, pwd: password},
	success: function(data){
if(json.type == true) {
$("#sucess").html("<li><i class='fa-li fa fa-check-square'></i>"+json.msg);
}
else{
$("#err").html("<i class='fa fa-ban'></i>"+json.msg);
}
	},
beforeSend:function(){
$("#err").html("<i class='fa fa-spinner fa-spin'></i> Loading...")
}
});
 });
});
</script>
</head>
<body>
<div id="loginform">
<div id="mainlogin">
<h1>Log in with awesome new thing</h1>
<form action="" method="post">
<div id="err"></div>
<div id="sucess"></div>
<input type="text" placeholder="username or email" id="usrname" value="" required>
<input type="password" placeholder="password" id="pw" value="" required>
<button type="submit" name="Login" id="btn-login"><i class="fa fa-arrow-right"></i></button>
</form>
<div id="note"><a href="#">Forgot your password?</a></div>
</div>
</body>
</html>

verify_login.php

<?php
session_start();
$key = "Ms1MG3iP2OJypjY1A3j5T9cYzWv6X974";

$key  = (isset($_REQUEST['key']) ? $_REQUEST['key'] : null);
$user = (isset($_REQUEST['name']) ? $_REQUEST['name'] : null);
$pass = (isset($_REQUEST['pwd']) ? $_REQUEST['pwd'] : null);

if($key == "Ms1MG3iP2OJypjY1A3j5T9cYzWv6X974")
{
$con = mysqli_connect("localhost","armedfor_ruadmin","RavingUpAdmin","armedfor_test") or die("Connection error: " . mysqli_error($con));

$query = $con->prepare("SELECT id  FROM login_test WHERE usrname = ? AND pw = ?");

$query->bind_param('ss', $user, $pass);
$query->execute();
$query->store_result();
$row = ($query->num_rows >= 1 ? true : false);
echo json_encode(array("type" => $row, "msg" => ($row == true ? 'Login sucess full!' : 'Wrong username or password!')));

}else{ echo json_encode(array("type" => false, "msg" => "Ocorreu um erro."));}


?>

Se eu fizer o form ele não recebe os dados mas se eu por exemplo colocar assim:

(Credencias correctas)

login_verify.php?key=Ms1MG3iP2OJypjY1A3j5T9cYzWv6X974&name=ola&pwd=ola

print:

{"type":true,"msg":"Login sucess full!"}

(Credencias incorrectas)

login_verify.php?key=Ms1MG3iP2OJypjY1A3j5T9cYzWv6X974&name=olssa&pwd=ossla

print:

{"type":false,"msg":"Wrong username or password!"}

Link to comment
Share on other sites

Tentei fazer o seguinte:

index.php

//topo
define('INCLUDE_CHECK',true);

pagina de verificação para o jquery:

if(!defined('INCLUDE_CHECK')) die('You are not allowed to execute this file directly');

Porque pensei que assim o jquery conseguia aceder.. mas não consegue 😞

Link to comment
Share on other sites

Não podes bloquear o acesso a links, podes sim proibir o acesso ao conteúdo com uma série de validações.

Se queres desinibir o utilizador de fazer o que queres crias (no ficheiro PHP onde está alojado código do ajax) uma sessão. Segue o exemplo:

index.php

session_start();

$_SESSION['key'] = 'Ms1MG3iP2OJypjY1A3j5T9cYzWv6X974';
/*
 Código do teu ajax...
*/

login_verify.php

if(isset($_SESSION['key']) && $_SESSION['key'] == 'Ms1MG3iP2OJypjY1A3j5T9cYzWv6X974'){

// fazes a query à BD e mostras o que tens a mostrar..
// no fim eliminas a variável de sessão para fazer reset
}

Desta forma estás a obrigar o utilizador a visitar primeiro a página index para que o código do login_verify funcione.

Link to comment
Share on other sites

Deu, e nos testes que fiz chega,,

Agora só tenho mais um erro, se eu inserir os dados no form e fazer a aja.. o php recebe de devolve o return, mas se der incorrecto eu não consigo repetir sem atualizar a página, dá o sguinte erro jquery:

Uncaught SyntaxError: Unexpected end of input

Código jquery:

<?php session_start(); ?>
<script type="text/javascript">
$(document).ready(function(){
$("#btn-login").click(function(){
<?php $_SESSION['key'] = 'Ms1MG3iP2OJypjY1A3j5T9cYzWv6X974'; ?>
var username=$('#usrname').val();
var password=$('#pw').val();
$.ajax({
url: "sources/verify/login_verify.php",
type: "POST",
data: {name: username, pwd: password},
success: function(data){
 var json = JSON.parse(data);
if(json.type == true) {
 $( ".inf" ).hide( "slow"),
 $("#mainlogin").html("<div class='inf'><span style='color:#00FD1E;'><i class='fa fa-check licon'></i>"+json.msg+"</span><p><span style='color: #Fff;'><i class='fa fa-spinner fa-spin licon'></i> Please wait...</span></p></div>");
}
else{
 $(".inf").show( 600),
 $(".inf").html("<span style='color: #FF0000;'><i class='fa fa-times licon'></i>"+json.msg+"</span>");
 }
},
beforeSend:function(){
 $(".inf").html("<span style='color: #Fff;'><i class='fa fa-spinner fa-spin licon'></i> Loading...</span>");
}
});
});
});
</script>

linha:

var json = JSON.parse(data);

Edited by RuiAlmeida20
Link to comment
Share on other sites

Se estiveres a utilizar XAMPP acede ao ficheiro C:\xampp\php\logs\php_error.log e está lá a causa do erro.

No entanto isso que fizeste não está correcto, estás a misturar PHP com Javascript, faz antes assim:

<?php
session_start();
$_SESSION['key'] = 'Ms1MG3iP2OJypjY1A3j5T9cYzWv6X974';
?>
<html>
 <head></head>
 <body>
<script>
 $(document).ready(function(){
	 $("#btn-login").click(function(){
		// etc etc..
	 });
 });
</script>
 </body>
<html>

Creio que o wamp também tem os logs de erro do PHP, é uma questão de procurares. Podes também aceder via browser directamente ao URL e verificar o erro.. http://localhost/nome_do_teu_projecto/sources/verify/login_verify.php?name=teste&pwd=teste

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.