Script ajax pentru mesaj de login

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
royal27
Mesaje: 49

Script ajax pentru mesaj de login

Am pagina de login in care vreau sa imi arate un mesaj de success sau fail care sa preia din do_login ,un script ajax care sa apara success cand se logheaza si ma redirectioneaza catre home si fail in aceeasi pagina de login

MarPlo
Salut,
Ce ai incercat, ce cod ai pentru scriptul de login si unde nu te descurci?

royal27
Eu am incercat cu asta dar nu imi redirectioneaza,bine l-am editat dupa codul meu,asta e originalul

Cod: Selectaţi tot

    <script type="text/javascript">
            $(document).ready(function(){

                $("#but_submit").click(function(){
                    var username = $("#txt_uname").val().trim();
                    var password = $("#txt_pwd").val().trim();

                    if( username != "" && password != "" ){
                        $.ajax({
                            url:'checkUser.php',
                            type:'post',
                            data:{username:username,password:password},
                            success:function(response){
                                var msg = "";
                                if(response == 1){
                                    window.location = "home.php";
                                }else{
                                    msg = "Invalid username and password!";
                                }
                                $("#message").html(msg);
                            }
                        });
                    }
                });

            });
        </script>

iar in do_login am asa

Cod: Selectaţi tot

$tm = time();
$xtm = $tm + getsxtm();
$r = rand (1,99999999999);
$did = $_SESSION["SID"];
$res =$xyz->query("DELETE FROM sh99x_ses WHERE uid ='".getuid_nick($uid)."'");
$res =$xyz->query("INSERT INTO sh99x_ses SET id='".$sid."', uid='".getuid_nick($uid)."', expiretm='".$xtm."'");
$sid = md5($_SESSION["SID"]);
 
if($res)
{
# PARTEA PRINCIPALA
$tolog=true;
$who = getuid_nick($uid);
$vizite =$xyz->query("SELECT vizite FROM sh99x_users WHERE id='".$who."'")->fetch_array();
$xyz->query("UPDATE sh99x_users SET browserm='".$ubr."', ipadd='".$uip."' WHERE id='".$who."'");
if($res)
{
$shistoric =$xyz->query("SELECT COUNT(*) FROM sh_istoricbr WHERE browser='".$ubr."' AND eu='".getuid_nick($uid)."'")->fetch_array();
if ($shistoric[0]==0){
$xyz->query("INSERT INTO sh_istoricbr SET browser='".$ubr."', eu='".getuid_nick($uid)."'");
}

//echo"<center><p>Bine ai revenit, <b>$uid</b>!</p></center><br/><br/>";
$tm = time();
$views = $vizite[0]+1;
$xyz->query("UPDATE sh99x_users SET logat='".time()."', vizite='".$views."' WHERE id='".$who."'");
$idn = getuid_nick($uid);
$lact =$xyz->query("SELECT lastact FROM sh99x_users WHERE id='".$idn."'")->fetch_array();
$xyz->query("UPDATE sh99x_users SET lastvst='".$lact[0]."' WHERE id='".$idn."'");
}else{
$logedin =$xyz->query("SELECT COUNT(*) FROM sh99x_ses WHERE uid='".getuid_nick($uid)."'")->fetch_array();
if($logedin[0]>0)
{
$xtm = time() + getsxtm();
$res =$xyz->query("UPDATE sh99x_ses SET expiretm='".$xtm."' WHERE uid='".getuid_nick($uid)."'");
$xyz->query("UPDATE sh99x_users SET browserm='".$ubr."', ipadd='".$uip."' WHERE id='".getuid_nick($uid)."'");
$tolog=true;
//echo"<div class='typewriter'><h1>Bine ai revenit, <b>$uid</b>!</h1></div><br/><br/>";
}else{
echo"<img src=\"images/point.gif\" alt=\"!\"/>Nu te poti autentifica pentru moment, te rugam sa revii mai tarziu<br/>";
}
}
}
}
if($tolog)
{
# PARTEA PRINCIPALA 2
$idd =$xyz->query("SELECT id FROM sh99x_users WHERE name='".$uid."'")->fetch_array();
$idd = $idd[0];
if(!empty($_POST["remember-me"])) {
	setcookie ("nume",$_POST["nume"],time()+ 3600);
	setcookie ("parola",$_POST["parola"],time()+ 3600);

} else {
	setcookie("nume","");
	setcookie("parola","");
}

//echo"<small><a href=\"/home\">Intrare</a></small><br/><br/>";
//echo"<small>Salveaza acum aceasta pagina ca marcaj (bookmark) in telefon pentru a te conecta automat data viitoare!</small><br/>";
$xyz->query("UPDATE sh99x_users SET icon_status='0' WHERE id='".$idd."'");
}else{
//echo"<small><a href=\"index.php?id=$shad0w\">Acasa</a></small>";
}

Daca bag datele cu scriptul ala imi da Invalid username and password!
Dar daca dau refresh ma logheaza pe prima pagina,daca le bag gresit tot Invalid username and password!
si ma da inapoi sa introduc datele.

MarPlo
1. Fisierul php spui ca e denumit: do_login, dar scriptul ajax apeleaza fisier php cu numele: checkUser.
2. In do_login folosesti $_SESSION["SID"], dar nu ai session_start() la inceputul lui.
3. Tu stii cum functioneaza acel cod php de logare, are cam multe interogari sql; in plus, nu se preia in script datele 'username' si 'password' pentru logare.

- Ca sa functioneze, in scriptul ajax se face redirect cand raspunsul de la server e numarul 1; deci, in codul php sa pui echo 1; acolo unde se confirma datele de logare, si fara sa ai alte date de iesire, sa transmita doar numarul 1.

royal27
Buna,am facut altceva

Am intregat acest script in toastr dar vreau ca daca introduc nume sau parola gresit sa imi arate eroare si daca sunt bune sa imi arate succes,acum arata doar eroare

Cod: Selectaţi tot

          <script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/2.0.1/js/toastr.js"></script>
           <script>
                $(function () {
$('#showsimple1').click(function (){
               // Display a error toast, with a title
                    toastr.options = {
                      "closeButton": true,
                      "debug": false,
                      "progressBar": true,
                      "preventDuplicates": true,
                      "positionClass": "toast-top-right",
                      "onclick": null,
                      "showDuration": "400",
                      "hideDuration": "1000",
                      "timeOut": "7000",
                      "extendedTimeOut": "1000",
                      "showEasing": "swing",
                      "hideEasing": "linear",
                      "showMethod": "fadeIn",
                      "hideMethod": "fadeOut"
                    }
   toastr.error('Error')



                });          
  })
 </script>

Aici este forma mea

Cod: Selectaţi tot

  <form class="login-form" method="post" action="../do_login">
                        <label class="login-page_label">
                            <input class="login-page_input" id="nume" placeholder="<?php echo NAME ?>" type="text" name="nume" value="<?php if(isset($_COOKIE["nume"])) { echo $_COOKIE["nume"]; } ?>" autocomplete="off">
                         
                        </label>
                        <label class="login-page_label">
                            <input class="login-page_input" id="parola" placeholder="<?php echo PASSWORD ?>" type="password" name="parola" value="<?php if(isset($_COOKIE["parola"])) { echo $_COOKIE["parola"]; } ?>">
                            
                        </label>
                        <div class="login-section_submit">
                            <ul>
                                <label class="switch " data-toggle="tooltip" title="<?php echo REMEMBER_ME ?>">
                              <input type="checkbox"  name="remember-me" checked>

				<span class="slider round"></span>
                                </label>
                            </ul>
                            <div class="twoToneCenter">
                            <button class="twoToneButton" id='showsimple1'></button>
                            </div>
                        </div>
                        <div class="login-page_forget">
                            <a href="">Forget Your Password ?</a>
                        </div>
                    </form>

MarPlo
Nu inteleg unde e problema, la php: verificare nume/parola si transmitere mesaj; sau la partea de javascript: receptionare si afisare mesaj?
Nu cunosc toaststr, dar din ce am gasit pe net:

Cod: Selectaţi tot

// for success - green box
toastr.success('Success messages');

// for errors - red box
toastr.error('errors messages');

// for warning - orange box
toastr.warning('warning messages');

// for info - blue box
toastr.info('info messages');
Ca sa adaugi un titlu la mesaj, specifica titlul ca al doilea argument:

Cod: Selectaţi tot

toastr.success('The process has been saved.', 'Success');

Astfel, poti sa faci codul ajax si cu toaststr asa:

Cod: Selectaţi tot

$('.login-form').submit(function(e){
  e.preventDefault();
  var username = $('#nume').val().trim();
  var password = $('#parola').val().trim();

  if(username !='' && password !=''){
    $.ajax({
      url:'../do_login',
      type:'post',
      data:{username:username,password:password},
      success:function(response){
        if(response == 1) toastr.success('Success messages');
        else toastr.error('errors messages');
      }
    });
  }
});

royal27
Merge cum ai facut dar nu imi transmite din do_login echo 1; aaa si in fisierul unde e do_login am session_start,imi da logarea mai departe dar nu imi da echo 1;

MarPlo
Daca te uiti in sursa html a paginii unde apare 1 ai sa vezi ca sunt si alte date /cod html, de aceea scriptul js nu recunoaste (response==1).
Ca sa functioneze, raspunsul trebuie sa fie doar 1, fara altceva, nici macar un spatiu.
Daca nu se poate, faci altfel, de exemplu, in php pui:

Cod: Selectaţi tot

echo 'logare-reusita';
Iar in ajax faci verificareas asa:

Cod: Selectaţi tot

if(response.indexOf('logare-reusita')!=-1) toastr.success('Success messages');

royal27
daca in do_login sterg tot si pun doar echo 1; merge dar nu imi mai inregistreaza sessionul si nu pot intra mai departe pe site,am incercat si a 2 a varianta adica ultima si tot nu merge.

daca pun <?php echo 1 ;?> si sterg tot din do_login nu mai merge, alta varianta de raspuns sau alt ajax care sa permita logarea si sa verifice nume parola etc din baza de date prin ajax cu notificare toast stii? sau json sau altceva.

MarPlo
Nu stiu de ce nu functioneaza. Aplica un alert(response); in ajax si vezi ce afiseaza.
Daca apare logare-reusita in raspuns ar trebui sa functioneze.
Daca totusi e in raspuns, posibil ca response sa nu fie string, in acest caz incearca asa:

Cod: Selectaţi tot

if(response.toString().indexOf('logare-reusita')!=-1) toastr.success('Success messages');
- Alta solutie nu stiu decat modificari mai mari in fisierul php de logare.

Alt script de logare pt. ce ai tu nu stiu, trebuie facut personalizat pe tabelul din baza ta de date.

royal27
Gata am rezolvat,cu ajutorul ultimei sintaxe ca imi arata eroare undeva,multumesc mult

Subiecte similare