SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden. |
 |
|

23-11-2014, 12:06
|
Kebab
Registrierter Benutzer
|
|
Registriert seit: Nov 2014
Beiträge: 9
|
|
Submit Button Keine Reaktion
Hallo zusammen
Vorne hinweg, beschäftige ich mich mit PHP und Datenbanken erst seit ein paar Wochen. Gestern habe ich angefangen eine Login/Registration Website zu erstellen(Link ist unten). Das Registrieren klappt wunderbar, der User wird in der Datenbank abgespeichert, ebenso kommen auch die Fehler Meldungen. Beim Login funktioniert das aber nicht. Eigentlich sollte ja eine Abfrage zur Datenbank kommen und nachher auf die Home.php weiter gehen. Aber sobald ich auf den Login Button drücke kommt: 404 die Seite kann nicht gefunden werden. Auch wenn ich die Login Daten nicht ausgefüllt habe, kommt gar nichts.
An was liegt das? Muss ich den Button noch irgendwie verlinken?
Hier der Link zur Website:
Mixture
Der Code:
PHP-Code:
<? include("./inc/header.inc.php"); ?>
<?
$reg = @$_POST['reg'];
//declaring variables to prevent errors
$fn = ""; //First Name
$ln = ""; //Last Name
$un = ""; //Username
$em = ""; //Email
$em2 = ""; //Email 2
$pswd = ""; //Password
$pswd2 = ""; // Password 2
$d = ""; // Sign up Date
$u_check = ""; // Check if username exists
//registration form
$fn = strip_tags(@$_POST['fname']);
$ln = strip_tags(@$_POST['lname']);
$un = strip_tags(@$_POST['username']);
$em = strip_tags(@$_POST['email']);
$em2 = strip_tags(@$_POST['email2']);
$pswd = strip_tags(@$_POST['password']);
$pswd2 = strip_tags(@$_POST['password2']);
$d = date("Y-m-d"); // Year - Month - Day
if ($reg) {
if ($em==$em2) {
// Check if user already exists
$u_check = mysql_query("SELECT username FROM users WHERE username='$un'");
// Count the amount of rows where username = $un
$check = mysql_num_rows($u_check);
if ($check == 0) {
//check all of the fields have been filed in
if ($fn&&$ln&&$un&&$em&&$em2&&$pswd&&$pswd2) {
// check that passwords match
if ($pswd==$pswd2) {
// check the maximum length of username/first name/last name does not exceed 25 characters
if (strlen($un)>25||strlen($fn)>25||strlen($ln)>25)
{
echo "The maximum limit for username/first name/last name is 25 characters!";
}
else
{
// check the maximum length of password does not exceed 25 characters and is not less than 5 characters
if (strlen($pswd)>30||strlen($pswd)<5)
{
echo "Your password must be between 5 and 30 characters long!";
}
else
{
//encrypt password and password 2 using md5 before sending to database
$pswd = md5($pswd);
$pswd2 = md5($pswd2);
$query = mysql_query("INSERT INTO users VALUES ('','$un','$fn','$ln','$em','$pswd','$d','0')");
die("<h2>Welcome to the test</h2> Login to your account to get started ...");
}
}
}
else
{
echo "Your passwords don't match!";
}
}
else
{
echo "Please fill in all of the fields";
}
}
else
{
echo "Sorry, but it looks like someone has already used that email!";
}
}
else
{
echo "Username already taken ...";
}
}
else
{
echo "Your E-mails don't match!";
}
?>
<?
//Login Script
if($login) {
if (isset($_POST["user_login"]) && isset($_POST["password_login"])) {
$user_login = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["user_login"]); // filter everything but numbers and letters
$password_login = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["password_login"]); // filter everything but numbers and letters
$password_login_md5 = md5($password_login);
$sql = mysql_query("SELECT id FROM users WHERE username='$user_login' AND password='$password_login_md5' AND closed='no' LIMIT 1"); // query the person
//Check for their existance
$userCount = mysql_num_rows($sql); //Count the number of rows returned
if ($userCount == 1) {
while($row = mysql_fetch_array($sql)){
$id = $row["id"];
}
$_SESSION["user_login"] = $user_login;
header("location: index.php");
exit();
} else {
echo "That information is incorrect, try again";
exit();
}
}
}
?>
<div style="width: 800px; margin: 0px auto 0px auto;">
<table>
<tr>
<td width="60%" valign="top">
<h2>Already a Memeber? Login below ...</h2>
<form action="index.php" method="POST">
<input type="text" name="user_login" size="25" placeholder="Username" /><p />
<input type="text" size="25" name="password_login" placeholder="Password"/><p />
<input type="submit" name="login" value="Login">
</form>
</td>
<td width="40%" valign="top">
<h2>Sign up Below ...</h2>
<form action="index.php" method="POST">
<input type="text" size="25" name="fname" class="auto-clear" placeholder="First Name" value="<? echo $fn; ?>"><p />
<input type="text" size="25" name="lname" class="auto-clear" placeholder="Last Name" value="<? echo $ln; ?>"><p />
<input type="text" size="25" name="username" class="auto-clear" placeholder="Username" value="<? echo $un; ?>"><p />
<input type="text" size="25" name="email" class="auto-clear" placeholder="Email" value="<? echo $em; ?>"><p />
<input type="text" size="25" name="email2" class="auto-clear" placeholder="Repeat Email" value="<? echo $em2; ?>"><p />
<input type="text" size="25" name="password" placeholder="Password"><p />
<input type="text" size="25" name="password2" placeholder="Password (again)" ><p />
<input type="submit" name="reg" value="Sign-Up">
</form>
</div>
</div>
</body>
</html>
|

23-11-2014, 12:16
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 3.875
|
|
1. Du hältst das EVA-Prinzip nicht ein. Datenbankabfragen zählen zur Verarbeitung und sollten nicht mit der HTML-Ausgabe vermischt werden.
2. Wozu die ganzen Aufrufe von strip_tags()?
3. Die mysql_* Funktionen sind veraltet und sollten nicht mehr verwendet werden. Nimm stattdessen mysqli oder PDO.
4. Warum lässt du beim Passwort nur Ziffern und Buchstaben zu? Ein sicheres Passwort sollte zumindest ein Sonderzeichen enthalten.
5. Werte, die du in SQL-Abfragen einfügst, solltest du immer escapen oder gleich Prepared Statements verwenden.
6. HTML-Tabellen sollten nicht fürs Layout missbraucht, sondern nur für die Ausgabe von tabellarischen Daten verwendet werden.
7. Dein HTML-Code ist kaputt. Überprüfe ihn mal mit dem W3C-Validator und korrigiere alle bemängelten Fehler.
8. Statt <? sollte <?php verwendet werden, da <? nur mit aktiviertem short_open_tag funktioniert, und das nicht vorausgesetzt werden kann.
9. MD5 ist veraltet und unsicher. Verwende einen aktuellen SHA-Algorithmus und außerdem einen Salt-Wert.
10. Rück deinen Code sauber ein. Es ist nicht ersichtlich, welche schließende Klammer zu welcher öffnenden gehört.
11. Wenn der Code scheinbar nichts tut, mach Debug-Ausgaben. Also zB. gib Variablen an markanten Stellen aus. Aktiviere außerdem das Error-Reporting in der PHP-Konfiguration und schau regelmäßig ins Fehler-Log von PHP und Webserver.
|

24-11-2014, 12:17
|
SysOp
Registrierter Benutzer
|
|
Registriert seit: May 2005
Beiträge: 81
|
|
Nimm das @ vor den ganzen $_POST`s raus, wer Fehler und warnings unterdrückt, kann nicht sehen, wo es hakt.
error_reporting(-1); also an!
|

24-11-2014, 20:25
|
Kebab
Registrierter Benutzer
|
|
Registriert seit: Nov 2014
Beiträge: 9
|
|
Nützt leider nichts...
Klappt auch ohne die "@" nicht. Aber das komische finde ich das, dass Registrieren funktioniert und das Login nicht. Sobald ich auf den Login Button
drücke kommt 404.
An was liegt das? Kann mir ansonsten jemand ein gutes Login/Reg Tutorial empfehlen.
|

24-11-2014, 20:54
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 3.875
|
|
Zitat:
Zitat von Kebab
An was liegt das?
|
Wie wärs, wenn du einfach auf die Hinweise eingehst, die ich dir gegeben habe?
|

24-11-2014, 21:08
|
Kebab
Registrierter Benutzer
|
|
Registriert seit: Nov 2014
Beiträge: 9
|
|
Ohh
Habe vergessen zurück zuschreiben, habe fast alle deine Punkte zu Herzen genommen ausser das mysqli bei der Connect.ini weil eine Fehler Meldungen gekommen ist. Und die Nummer 1 und die 9 auch nicht. Die 10 mache ich noch.
Aber da beim Registrierung Button alles funktioniert, vermute ich das es sowieso nicht an dem liegt, trotzdem vielen Dank.
|

24-11-2014, 22:39
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 25.236
|
|
Dass das nicht funktioniert, liegt vor allem daran, dass dein HTML-Code so dermaßen fehlerhaft ist …
- Ausgabe einer PHP-Fehlermeldung vor dem Doctype
- Das form-Element des Suchformulars wird nicht geschlossen, es ist offen bis zum schließenden </body>-Tag und </html>-Tag. (Durch diesen Fehler kommt der Browser durcheinander, und denkt beide Eingabefelder und der Submit-Button deines vermeintlichen Login-Formulars gehörten auch noch zum Suchformular – und deshalb wird bei Klick auf „Login“ das ganze an search.php abgeschickt, und diese Adresse gibt einfach nur einen 404-Fehler, vermutlich weil es search.php nicht gibt auf deinem Server.)
- nach diesen beiden Tags, wo das Dokument eigentlich schon zuende sein müsste, kommt dann erst mal die Your E-mails don't match! Fehlermeldung …
- … und danach geht es mit div, table etc. weiter – obwohl das Dokument eigentlich schon längst von dir beendet wurde.
Schau dir mal über „Quelltext anzeigen“ in deinem Browser an, was für einen Quark du da verzapft hast!
… und dann strukturiere deine Seite mal halbwegs ordentlich. Ja, der von h3ll angesprochene Punkt #1 trägt dazu schon ein wesentliches bei – wenn du den umsetzt, dann werden Fehlermeldungen nämlich nicht mehr einfach so irgendwo rausgefeuert, sondern erst mal gesammelt, und dann nachdem die Verarbeitung der Eingabedaten durch ist, geordnet im body des Dokumentes ausgegeben.
Und dann validierst du deine Seite mal: http://validator.w3.org/ Erst wenn dir dort keine groben Fehler mehr angezeigt werden, dann macht die weitere Fehlersuche (sofern dann noch nötig) Sinn.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

25-11-2014, 17:31
|
Kebab
Registrierter Benutzer
|
|
Registriert seit: Nov 2014
Beiträge: 9
|
|
Vielen Dank
Vielen Dank
Ich habe komplett vergessen die search.php auf den Server zuladen. Habe ich jetzt einfach umgangen und eine Action names search geschrieben.
|

26-11-2014, 13:04
|
Kebab
Registrierter Benutzer
|
|
Registriert seit: Nov 2014
Beiträge: 9
|
|
Noch ein kleines Problem
Ich habe jetzt nur noch ein kleines Problem, das bei der Line 97 in dem index.php
liegt. Fehlercode: "Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /srv/disk13/1760713/www/regandlogtest.dx.am/index.php on line 97
That information is incorrect, try again"
Soweit ich das verstehe, kann die Anzahl der dort eingetragenen Reihen nicht gefunden werden obwohl ich dort 8 Spalten habe.
¨
An was liegt das?
PHP-Code:
<?php include("./inc/header.inc.php"); ?>
<?php
$reg = @$_POST['reg'];
$login = @$_POST['login'];
//declaring variables to prevent errors
$fn = ""; //First Name
$ln = ""; //Last Name
$un = ""; //Username
$em = ""; //Email
$em2 = ""; //Email 2
$pswd = ""; //Password
$pswd2 = ""; // Password 2
$d = ""; // Sign up Date
$u_check = ""; // Check if username exists
error_reporting(-1);
//registration form
$fn = strip_tags(@$_POST['fname']);
$ln = strip_tags(@$_POST['lname']);
$un = strip_tags(@$_POST['username']);
$em = strip_tags(@$_POST['email']);
$em2 = strip_tags(@$_POST['email2']);
$pswd = strip_tags(@$_POST['password']);
$pswd2 = strip_tags(@$_POST['password2']);
$d = date("Y-m-d"); // Year - Month - Day
if ($reg) {
if ($em==$em2) {
// Check if user already exists
$u_check = mysql_query("SELECT username FROM users WHERE username='$un'");
// Count the amount of rows where username = $un
$check = mysql_num_rows($u_check);
if ($check == 0) {
//check all of the fields have been filed in
if ($fn&&$ln&&$un&&$em&&$em2&&$pswd&&$pswd2) {
// check that passwords match
if ($pswd==$pswd2) {
// check the maximum length of username/first name/last name does not exceed 25 characters
if (strlen($un)>25||strlen($fn)>25||strlen($ln)>25)
{
echo "The maximum limit for username/first name/last name is 25 characters!";
}
else
{
// check the maximum length of password does not exceed 25 characters and is not less than 5 characters
if (strlen($pswd)>30||strlen($pswd)<5)
{
echo "Your password must be between 5 and 30 characters long!";
}
else
{
//encrypt password and password 2 using md5 before sending to database
$pswd = md5($pswd);
$pswd2 = md5($pswd2);
$query = mysql_query("INSERT INTO users VALUES ('','$un','$fn','$ln','$em','$pswd','$d','0')");
die("<h2>Welcome to the test</h2> Login to your account to get started ...");
}
}
}
else
{
echo "Your passwords don't match!";
}
}
else
{
echo "Please fill in all of the fields";
}
}
else
{
echo "Username already taken ...";
}
}
else
{
echo "Your E-mails don't match!";
}
}
?>
<?php
//Login Script
if (isset($_POST["user_login"]) && isset($_POST["password_login"])) {
$user_login = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["user_login"]); // filter everything but numbers and letters
$password_login = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["password_login"]); // filter everything but numbers and letters
$password_login_md5 = md5($password_login);
$sql = mysql_query("SELECT id FROM users WHERE username='$user_login' AND password='$password_login_md5' AND closed='no' LIMIT 1"); // query the person
//Check for their existance
$userCount = mysql_num_rows($sql); //Count the number of rows returned
if ($userCount == 1) {
while($row = mysql_fetch_array($sql)){
$id = $row["id"];
//$user_login = $row["username"];
//$password_login = $row["password"];
}
$_SESSION["user_login"] = $user_login;
header("./index.php");
exit();
}
else {
echo "That information is incorrect, try again";
exit();
}
}
?>
<div style="width: 800px; margin: 0px auto 0px auto;">
<table>
<tr>
<td width="60%" valign="top">
<h2>Already a Memeber? Login below ...</h2>
<form action="index.php" method="POST">
<input type="text" name="user_login" size="25" placeholder="Username" /><p />
<input type="text" size="25" name="password_login" placeholder="Password"/><p />
<input type="submit" name="login" value="Login">
</form>
</td>
<td width="40%" valign="top">
<h2>Sign up Below ...</h2>
<form action="index.php" method="POST">
<input type="text" size="25" name="fname" class="auto-clear" placeholder="First Name" value="<? echo $fn; ?>"><p />
<input type="text" size="25" name="lname" class="auto-clear" placeholder="Last Name" value="<? echo $ln; ?>"><p />
<input type="text" size="25" name="username" class="auto-clear" placeholder="Username" value="<? echo $un; ?>"><p />
<input type="text" size="25" name="email" class="auto-clear" placeholder="Email" value="<? echo $em; ?>"><p />
<input type="text" size="25" name="email2" class="auto-clear" placeholder="Repeat Email" value="<? echo $em2; ?>"><p />
<input type="text" size="25" name="password" placeholder="Password"><p />
<input type="text" size="25" name="password2" placeholder="Password (again)" ><p />
<input type="submit" name="reg" value="Sign-Up">
</form>
</div>
</div>
</body>
</html>
|

26-11-2014, 18:38
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 25.236
|
|
Zitat:
Zitat von Kebab
An was liegt das?
|
Daran, dass deine Query fehlerhaft war und deshalb von der Datenbank nicht ausgeführt werden konnte.
Als frag die Datenbank, was der Fehler war.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

26-11-2014, 19:27
|
Kebab
Registrierter Benutzer
|
|
Registriert seit: Nov 2014
Beiträge: 9
|
|
Geht leider nicht
Da ich leider nur eine gratis Website kann ich nicht auf Error und Debug Codes zugreifen. Gibt es noch eine andere Möglichkeit?
|

26-11-2014, 21:58
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 3.875
|
|
|

27-11-2014, 16:30
|
Kebab
Registrierter Benutzer
|
|
Registriert seit: Nov 2014
Beiträge: 9
|
|
Da ich mich leider erst seit ein paar Wochen mit PHP beschäftige komme ich da nicht draus. Also habe ich:
HTML-Code:
string mysql_error ([ resource $link_identifier = NULL ] )
diesen Code bei meinen Variablen reingeschrieben. Kommt aber nur eine Fehler Meldung:
HTML-Code:
Parse error: syntax error, unexpected 'mysql_error' (T_STRING) in /srv/disk13/1760713/www/regandlogtest.dx.am/index.php on line 13
Darum denke ich das ich es nicht am richtigen Ort rein geschrieben habe. Wo muss ich das hinschreiben?
|

27-11-2014, 18:49
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 25.236
|
|
Das ist eine Funktion, und die wird aufgerufen wie jede andere Funktion auch …
Aber wenn dir selbst solche Basics fehlen, dann solltest du vielleicht erst mal ein Grundlagen-Tutorial durcharbeiten.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

27-11-2014, 20:27
|
Kebab
Registrierter Benutzer
|
|
Registriert seit: Nov 2014
Beiträge: 9
|
|
Okay
HTML-Code:
function test()
{
Hier rein kommt also der Code, aber wohin sollte ich am besten die Funktion tun?
}
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
Aktuelle PHP Scripte
Homepagetools 2022
Kostenloses Gästebuch und Homepagetools für die eigene Homepage.
Bei GuxDu kann man sich kostenlos die Websitetools auf die vorhandene Website einbauen. Zudem kann man bei GuxDU auch eine eigene Homepage mit 3D Effekten erstellen. GuxDu ist kostenlos.
29.04.2022
freepler | Kategorie: PHP/ Gaestebuch
|
SF-Shopsystem V1.0
Hier haben wir ein einzigartiges Shopsystem in PHP.
Die Anzahl der Artikel ist unbegrenzt, einfach zu bedienen und erklärt sich.
Ausführliche Beschreibung weiter unten.
28.04.2022
Speedcrawler | Kategorie: PHP/ Shops
|
Anzeigen Markt mit PayPal Bezahl System
Anzeigen Markt Script
mit PayPal Bezahl System
Der Benutzer hat die Möglichkeit sofort nach Bezahlung mit PayPal
seine Anzeigen zu schalten, je nach seinem Guthaben.
27.04.2022
Webace_de | Kategorie: PHP/ Anzeigenmarkt
|
Alle PHP Scripte anzeigen
|