2015-04-29 16 views
5

Generalnie mam formularz, którego działanie jest linkiem, który weryfikuje nazwę użytkownika i hasło (nie mogę opublikować linku nie należy do mnie) i jeśli jest poprawny, daje mi "ok" lub inaczej "nie" Jak mogę zrobić to w taki sposób, że jeśli tak to kieruje mnie do mojej strony indeksu i jeśli nie daje błędu lub przeładowuje stronę lub coś takiego. Jest ich sposobem, aby to zrobić ogólny wygląd HTML jest:HTML Forms dwie akcje

<form method="post" action="https://***************/login"> 
     <label for="book">Username:</label> 
     <input type="text" name="username" id="username" placeholder="Enter username"> 
     <label for="course">Password:</label> 
     <input type="password" name="password" id="password" placeholder="Enter password"> 
     <input type="submit" value="Log in"> 
    </form> 

więc jeśli miałbym zmienić go w sposób chcę to działanie powinno zmienić się w coś podobnego verify.php który miałby wygląd z

<?php 
    # how do I use an if for a link using the info that was input 
    if($_POST["https://***************/login"]){ 
     #load index.html 
?> 
     <script type="text/javascript"> 
      window.location.href = 'index.html'; 
     </script> 
<?php 
    else{ 
     #load the page again 
?> 
     <script type="text/javascript"> 
      window.location.href = 'login.php'; 
     </script> 
<?php   
    } 
?> 

Jestem trochę nowy dla php. Więc pomóż

+0

Polecam masz stanowisko formularz z powrotem do siebie. Jeśli występują błędy, ponownie pokaż formularz z tymi błędami. Jeśli wszystko jest w porządku, to logika logowania (dodaj użytkownika do sesji lub cokolwiek innego), a następnie przekieruj użytkownika na stronę sukcesu. –

+0

Kiedy mówisz, że link do akcji logowania nie należy do Ciebie, masz na myśli, że nie masz również uprawnień do edycji tego pliku weryfikacyjnego? – FabioG

+0

@FabioG Tak, nie mam dostępu do edycji pliku weryfikacyjnego – Shereen

Odpowiedz

1

Będąc w stanie edytować plik weryfikacji logowania, myślę, że najlepszą opcję jest złożyć formularz za pośrednictwem ajax i obsługiwać swoją odpowiedź z javascript, mający formę jak

<form method="post" action="" onsubmit="return false;"> 
    <label for="book">Username:</label> 
    <input type="text" name="username" id="username" placeholder="Enter username"> 
    <label for="course">Password:</label> 
    <input type="password" name="password" id="password" placeholder="Enter password"> 
    <input type="submit" value="Log in" onclick="btnAuthenticateUser();"> 
</form> 

następnie w zwykły javascript coś

<script type="text/javascript"> 
var xmlHttp; 
function GetXmlHttpObject() { 
    var xmlHttp = null; 
    try { 
     xmlHttp = new XMLHttpRequest(); 
    } 
    catch (e) { 
     try { 
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch (e) { 
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    } 
    return xmlHttp; 
} 
function btnAuthenticateUser() { 
    try { 
     var username = document.getElementById('username'); 
     var pwd = document.getElementById('password'); 
     xmlHttp = GetXmlHttpObject(); 
     if (xmlHttp == null) { 
      alert("Your browser does not support AJAX!"); 
      return; 
     } 
     var url = 'https://***************/login?username=' + username.value + '&password=' + pwd.value; 
     xmlHttp.onreadystatechange = function() { 
      if (xmlHttp.readyState == 4) { 
       if (xmlHttp.status == 200) { 
        if (xmlHttp.responseText == "ok") { 
         window.location = "index.html"; 
        } else { 
         location.reload(); 
        } 
       } 
       if (xmlHttp.readyState == 4) { 
        // LoadingPage 
       } 
      } 
     } 
     xmlHttp.open("POST", url, true); 
     xmlHttp.send(null); 
     if (xmlHttp.readyState == 1) { 
      //LoadingPage 
     } 
    } catch (e) { 
     alert(e.Message); 
    } 
} 
</script> 

lub jeśli używasz jQuery

function btnAuthenticateUser() { 
    $.ajax({ 
     async: true, 
     type: 'POST', 
     url: 'https://***************/login', 
     data: { username: $('#username').val(), password: $('#password').val()} 
    }) 
    .done(function (data) { 
     if (data == "ok") { 
      window.location = "index.html"; 
     }else{ 
      location.reload(); 
     } 
    }) 
    .fail(function (jqxhr, textStatus, error) { 
     GriterError(Global.FailTryAgain); 
    }); 
} 
+0

, jeśli używam kodu javascript, a następnie daje mi błąd w linii 79, który ma xmlHttp.send (null); z błędem net :: ERR_NAME_NOT_RESOLVED, jeśli używam jquery, którego nie wpisuję, jeśli (dane == "ok") bezpośrednio przeładowuje stronę, nawet jeśli dane wejściowe były poprawne – Shereen

+0

nie ma sprawy, uruchomiono go przez dodanie nagłówka i jak usunięcie "==" ok "" – Shereen

3

Jest nagłówek przekierować, trzeba go umieścić w skrypcie PHP:

header('Location: yoururl.com'); 

Aby nagrać błąd ze skryptu, można ustawić go w $ _SESSION zmienne:

session_start(); // at the beginning of your script 
$_SESSION['error'] = 'Password incorrect, please try again'; 

I tak, w drugiej strony, można użyć coś takiego:

if($_SESSION['error']) { 
    echo $_SESSION['error']; // display error 
    $_SESSION['error'] = ''; // delete it 
} 
0

Możesz wykonać akcję, której potrzebujesz w swoim skrypcie weryfikacyjnym, a następnie wprowadzić przekierowanie za pomocą nagłówków w PHP.

Po akcji weryfikacyjnej można wybrać, które strony, aby przejść do pośrednictwem IF/THEN

na przykład:

if ([the action you wanted succeeded]) { 
    header('Location: index.php'); 
} 
else { 
    header('Location: login.php'); 
}