Sign Up/Log In Formular, PHP MySQL
Guten Tag!
Bin ich auf der Suche für verschiedene Lösungen auf dem web, aber ich habe nicht bestanden, durch einen einzigen, um mein problem zu lösen
Grundsätzlich habe ich schon ein login-system mit Registrierung, und alles funktioniert gut, außer wenn ich versuche zu registrieren, die es nicht in die Datenbank eingeben, die ich gemacht habe. Dann habe ich versucht, einfügen von Werten in meiner Tabelle, und versucht einzuloggen, aber alle es tut, war einloggen obwohl ich das Passwort falsch ist.
Hier ist die Datenbank:
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| studID | int(11) | NO | PRI | NULL | auto_increment |
| fname | varchar(30) | NO | | NULL | |
| lname | varchar(30) | NO | | NULL | |
| address | varchar(80) | NO | | NULL | |
| username | varchar(20) | NO | | NULL | |
| password | varchar(20) | NO | | NULL | |
+----------+-------------+------+-----+---------+----------------+
index.html
<html>
<head>
<title>Welcome!</title>
<style>
</head>
<body>
<form name="form1" method="post" action="login.php">
<div align="center">
<p><img src="images/welcome.jpg" /></p>
<table id="title">
<tr>
<td>Username:</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="Log In" /></td>
</tr>
</table>
<p>New here? <a href="signup.php">Register!</a></p>
</div>
</form>
</body>
</html>
login.php
<?php
include("db.php");
session_start();
$username=($_POST['username']);
$password=($_POST['password']);
$result=mysql_query("SELECT count(*) FROM student WHERE username='$username' and password='$password'");
$count=mysql_fetch_array($result);
if($count==0){
session_register("username");
session_register("password");
header("location:success.php");
} else {
echo 'Wrong Username or Password! Return to <a href="index.html">login</a>';
}
?>
und db.php
<?php
$conn = mysql_connect('localhost', 'root', 'ella');
if (!$conn)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("studrecord", $conn);
?>
signup.php (es ist ziemlich lang, schneiden Sie einige unnötige Teile)
<html>
<head>
<title>Register</title>
</head>
<body>
<form action="index.html">
<table id="title">
<tr>
<td>First Name:</td>
<td><input type="text" name="fname" /></td>
</tr>
<tr>
<td>Last Name:</td>
<td><input type="text" name="lname" /></td>
</tr>
<tr>
<td>Address:</td>
<td><input type="text" name="address" /></td>
</tr>
<tr>
<td>Username:</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="Sign Up" /></td>
</tr>
</table>
</div>
</form>
<?php
if (isset($_POST['submit']))
{
include 'db.php';
$fname=$_POST['fname'];
$lname=$_POST['lname'];
$address=$_POST['address'];
$username=$_POST['username'];
$password=$_POST['password'];
mysql_query("INSERT INTO student(fname,lname,address,username,password)
VALUES ('$fname','$lname','$address','$username','$password')");
}
?>
</...
Vielen Dank im Voraus!
- wenn login-system gut funktioniert und nicht registrieren, warum dann zeigen Sie Ihre login.php und nicht signup.php ?
- oh, stimmt-ganz übersehen, dass. danke für die Erinnerung!
- mysql ist veraltet, versuchen mysqli oder pdo
- session_register("username") ist veraltet, benutze $_SESSION["username"]
- ALLES, was in Ihrem Skript ist schlecht, falsch, extrem veraltet und Total unsicher. Ich wirklich nicht wollen, Sie zu beleidigen, aber Sie sollten nicht verwenden Sie dieses Skript! Pleeease, einen professionellen Skript.
- Hallo SQL-injection!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Blick auf Ihre
signup.php
Dokument, es sieht aus wie Ihre form der Aktion gelangen Sie zurück zumindex.php
Seite. Das bedeutet, dass die Logik der folgende PHP-code, der eigentlich nie stattfindet. Verwenden Sie diese:statt
<form action="index.html">
.Versuchen Sie, die form action auf die Seite selbst und sehen Sie, wenn Sie die Daten eingefügt in die Tabelle.
Einige Randnotizen:
'SELECT count(*) FROM student WHERE username='$username' and password='$password'
, könnte es besser sein, um einfach Fragen Sie nach dem Ergebnis Zeilen selbst durch den AustauschCOUNT(*)
mit einfach*
. Sie können dann mitmysqli_num_rows
zum zählen der Zeilen.Ich hoffe, dass ich nicht etwas fehlt, aber ich bin ein wenig verwirrt von der Logik auf Ihre
index.php
Seite. Sie sagenwo ich denke du meinst
if($count > 0)
, weil Sie möchten, eine Zeile existieren, die mit diesem Benutzernamen/Passwort-Kombination.Viel Glück bei Ihren Bemühungen!
Versuchen Sie, die count-Abfrage an diese. Auch bleiben Weg von mysql_* - Funktionen, wie Sie abgeschrieben werden.
Nicht eine awnser auf deine Frage, aber ändern
zu
sind Sie login mit Passwort falsch, weil Sie nicht prüfen ob vorhanden in Datenbank , ändern Sie Ihren code, um dieses.
ändern Sie diese
zu
in Ihrem register yfile, den Sie überprüfen mit dem gleichen Namen von login und signup
ändern Sie den Namen der register input .
zu diesem
und steckte es in Ihre form.
und ändern Sie Ihre form
zu
signup.php
denn Sie war mit index.html in Aktion und wie das funktionieren sollte alles :). ich wünschte, ich könnte Ihnen helfen.sorry, ich war nicht hier