| 

.NET C# Java Javascript Exception

1
Hallo,

habe hier ein sessionbasiertes Login mit PHP, HTML und CSS realisiert, welches soweit auch ganz gut funktioniert. Allerdings würde ich das Ganze gerne jetzt noch ein bisschen verschönern. Und zwar möchte ich, dass bei einer fehlerhaften Eingabe eine Warnung erscheint. Zuerst habe ich einfach eine zweite Seite mit Warnmeldung erstellt, die bei Misserfolg aufgerufen wird.

Schöner wäre es natürlich die Meldung zu laden ohne eine neue Seite aufzurufen. Wäre sicherlich mit AJAX machbar. Allerdings hab ich damit noch nie was gemacht und jetzt nach bestimmt zwei Stunden probieren auch nichts zum Laufen gebracht.

Könntet ihr mir eventuell nen paar Ansätze geben?

Hier die Files:

<?php
include 'loginscript.php';
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="language" content="deutsch, de" />
<link rel="stylesheet" href="css/style.css" type="text/css" />
<title>Login - classicModels</title>
</head>

<body>
<div id="LoginBox">
<div id="Dialog">
<div id="LoginForm">
<form id="loginform" method="post" action="login.php">
<table id="t1">
<tbody>
<tr>
<td>
Benutzername
</td>
<td>
<input type="text" name="username" id="username"/>
</td>
</tr>
<tr>
<td>
Passwort
</td>
<td>
<input type="password" name="password" id="password"/>
</td>
</tr>
<tr>
<td colspan="2" style="text-align:right">
<span class="Button">
<input style="position:relative" name="login" id="login" class="ButtonContainer" value="Anmelden" type="submit">
</span>
</td>
</tr>
</tbody>
</table>
</form>
</div>
</div>
</body>
</html>


<?php 

session_start();

include "dbconnect.php";

if (isset($_SESSION['logged']))
{
header('Location: ajax/cmapp.php');
exit;
}

else if (isset( $_POST['login'] ))
{
$username = $_POST['username'];
$password = $_POST['password'];

$clean_username = strip_tags(stripslashes(mysql_real_escape_string($username)));

$clean_password = (strip_tags(stripslashes(mysql_real_escape_string($password))));

$hash_password = saltedHash($clean_password, $clean_username);

$sql = mysql_query("SELECT * FROM $loginTable WHERE $attUsername = '$clean_username' AND $attPassword = '$hash_password'");

if (mysql_num_rows($sql) == 1)
{
$_SESSION['logged'] = true;
echo "Login erfolgreich! Sie werden weitergeleitet.";
header('refresh:2;url=ajax/cmapp.php');
exit;
}
}

function saltedHash($password, $username)
{
return md5($password.$username);
}

?>
09.03.2013
MRae 259 1 7
MRae 259 1 7
2 Antworten
0
Hab es jetzt mal mit JQuery probiert...

<script type="text/javascript">             
/* ausführen, wenn html-seite geladen wurde */
$(document).ready(function()
{
$("#tr1").hide();
/* sendung formular abfangen */
$("#loginform").submit(function() {
/* ajax objekt zum aufruf & versand an das skript
'name' und 'email' sind in der data-zeile die variablen für das php-skript */
$.ajax({
type: "POST",
url: "loginscript.php",
data: "username=" + $("#username").val() + "&password=" + $("#password").val(),
success: function(msg)
{
if (msg == 'correct')
{
window.location='ajax/cmapp.php';
}
else
{
$("#tr1").hide().load("message.html").fadeIn(0);
}
}
});

/* wichtig!
sonst schickt der browser das formular ab und
und ruft die seite auf die bei action="" hinterlegt wurde.
dann verlässt er nämlich die bisherige seite... */
return false;

});

});
</script>


Nun habe ich allerdings das Problem, dass ich mich nicht mehr einloggen kann. Es scheint, als wird die loginscript.php nicht ausgeführt.
09.03.2013
MRae 259 1 7
0
Ich würde mal sagen es steht und fällt damit, dass username und passwort nur geprüft werden, wenn der Parameter "login" übergeben wird, was aber im AJAX-Aufruf nicht getan wird.

Hier mein Test-Code (Vorsicht: Dateinamen und Pfade weichen von deinem Code-Beispiel ab).
<?php
session_start();
if (isset($_SESSION['logged'])) {
header('Location: cmapp.php');
exit;
} else if (isset( $_POST['login'] )) {
if ($_POST['username'] == 'test' && $_POST['password'] == 'test') {
$_SESSION['logged'] = true;
echo "correct";
exit;
}
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js" type="text/javascript" ></script>
<script type="text/javascript">
$(document).ready(function() {
$("#loginform").submit(function() {
$('#t1').hide();
$.ajax({
type: "post",
url: "test.php",
// data als JSON, jQuery kümmerst sich schon drum
data: {
login: true, // im php wird der Login-Code nur ausgeführt wenn der Parameter gesetzt ist
username: $("#username").val(),
password: $("#password").val()
},
success: function(data) {
if (data == 'correct') {
window.location.href = 'cmapp.php';
} else {
alert("Login fehlgeschlagen!");
$('#t1').show(); // Formular wieder Anzeigen
}
}
});
return false;
});
});
</script>
</head>
<body>
<!-- Body wie in der Frage -->
<div id="LoginBox">
<div id="Dialog">
<div id="LoginForm">
<form id="loginform" method="post" action="test.php">
<table id="t1">
<tbody>
<tr>
<td>Benutzername</td>
<td><input type="text" name="username" id="username"/></td>
</tr>
<tr>
<td>
Passwort
</td>
<td>
<input type="password" name="password" id="password"/>
</td>
</tr>
<tr>
<td colspan="2" style="text-align:right">
<span class="Button">
<input style="position:relative" name="login" id="login" class="ButtonContainer" value="Anmelden" type="submit">
</span>
</td>
</tr>
</tbody>
</table>
</form>
</div>
</div>
</body>
</html>


Besonders sauber ist der Code nicht, aber zum ausprobieren sollte es reichen.
12.03.2013
phg 1,6k 3

Stelle deine Javascript-Frage jetzt!