Kleinen Fehler im Loginscript
Malte
- php
-1 Mario0 Malte0 Tobias Kloth0 Malte0 Tobias Kloth0 Malte0 Tobias Kloth0 Malte
1 Siechfred
Hi,
ich habe irgendwoe in der achten Zeile, dass ist die Zeile mit dem Username einen kleinen Fehler.
Wäre vielleicht nett, wenn irh mir ein Tipp geben könnte woran es leigt. Nicht bitte die Lösung nur ein Tipp. Danke
Parse error: parse error, unexpected ';' in D:\Xampp\xampp\htdocs\Jugend\forum\function\forum\checkuser.php on line 8
<?php
session_start ();
error_reporting(E_ALL);
include ("../verbindung.php");
$sql = sprintf("SELECT id, username, password FROM user WHERE
mysql_real_escape_string(".$_REQUEST['username']."),
mysql_real_escape_string(".$_REQUEST['password']."))";
$result = mysql_query ($sql);
if (mysql_num_rows ($result) > 0)
{
$data = mysql_fetch_array ($result);
$_SESSION["user_id"] = $data["id"];
$_SESSION["user_username"] = $data["username"];
$_SESSION["user_password"] = $data["password"];
header ("Location: ../../forum.php");
}
else
{
header ("Location: forum.php?fehler=1");
}
?>
Hallo,
$sql = sprintf("SELECT id, username, password FROM user WHERE
mysql_real_escape_string(".$_REQUEST['username']."),
mysql_real_escape_string(".$_REQUEST['password']."))";
Sollte wohl lauten:
$sql = sprintf
(
"SELECT id, username, password FROM user WHERE ".
mysql_real_escape_string($_REQUEST['username']).
",".
mysql_real_escape_string($_REQUEST['password'])
);
Bei dir waren die mysql_real_escape_string()-Aufrufe direkt
in den String eingebettet.
Mario
Bekomme jetzt folgende MEldung:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\Xampp\xampp\htdocs\Jugend\forum\function\forum\checkuser.php on line 16
Hallo Malte,
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\Xampp\xampp\htdocs\Jugend\forum\function\forum\checkuser.php on line 16
*seufz* was sagt mysql_error() an dieser Stelle und wie sieht der Query aus?
Grüße aus Nürnberg
Tobias
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '== Malte AND password == kroatien' at line 1
und mein Code:
<?php
session_start ();
error_reporting(E_ALL);
include ("../verbindung.php");
$username = addslashes(htmlspecialchars($_POST['username']));
$password = addslashes(htmlspecialchars($_POST['password']));
$sql ="SELECT id, username, password FROM user WHERE username == ".$username." AND password == ".$password."";
$result = mysql_query ($sql) or die(mysql_error()); ;
if (mysql_num_rows ($result) > 0)
{
$data = mysql_fetch_array ($result);
$_SESSION["user_id"] = $data["id"];
$_SESSION["user_username"] = $data["username"];
$_SESSION["user_password"] = $data["password"];
echo "<meta http-equiv=\"refresh\" content=\"0; ../../forum.php\">";
}
else
{
echo "<meta http-equiv=\"refresh\" content=\"15; ../../forum.php?fehler=1\">";
}
?>
Hallo Malte,
$username = addslashes(htmlspecialchars($_POST['username']));
$password = addslashes(htmlspecialchars($_POST['password']));
Warum verwendest du auf einmal addslashes() statt mysql_real_escape_string()? Warum verwendest du hier htmlspecialchars()?
$sql ="SELECT id, username, password FROM user WHERE username == ".$username." AND password == ".$password."";
Schau dir bitte nochmal an, wie Vergleichsoperatoren bei MySQL aussehen, außerdem fehlen die Anführungszeichen um die Werte.
$result = mysql_query ($sql) or die(mysql_error()); ;
warum stehen hier zwei ; am Ende der Zeile?
Grüße aus Nürnberg
Tobias
Bekomme weiterhin folgende Fehlermeldung:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '== Malte AND password == kroatien' at line 1
Mein Code:
<?php
session_start ();
error_reporting(E_ALL);
include ("../verbindung.php");
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$sql ="SELECT id, username, password FROM user WHERE username == ".$username." AND password == ".$password."";
$result = mysql_query ($sql) or die(mysql_error());
if (mysql_num_rows ($result) > 0)
{
$data = mysql_fetch_array ($result);
$_SESSION["user_id"] = $data["id"];
$_SESSION["user_username"] = $data["username"];
$_SESSION["user_password"] = $data["password"];
echo "<meta http-equiv=\"refresh\" content=\"0; ../../forum.php\">";
}
else
{
echo "<meta http-equiv=\"refresh\" content=\"15; ../../forum.php?fehler=1\">";
}
?>
Hallo Malte,
$sql ="SELECT id, username, password FROM user WHERE username == ".$username." AND password == ".$password."";
Lies und befolge meine Hinweise bzgl. dieser Zeile doch bitte.
Grüße aus Nürnberg
Tobias
Hi,
sorry habe den Teil nicht gesehen. Habe es jetzt gemacht, Bekomme keine Fehlermeldung mehr, aber ich kann mich immer noch nicht einloggen:
<?php
session_start ();
error_reporting(E_ALL);
include ("../verbindung.php");
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$sql ="SELECT id, username, password FROM user WHERE 'username == ".$username."' AND 'password == ".$password."'";
$result = mysql_query ($sql) or die(mysql_error());
if (mysql_num_rows ($result) > 0)
{
$data = mysql_fetch_array ($result);
$_SESSION["user_id"] = $data["id"];
$_SESSION["user_username"] = $data["username"];
$_SESSION["user_password"] = $data["password"];
echo "<meta http-equiv=\"refresh\" content=\"0; ../../forum.php\">";
}
else
{
echo "<meta http-equiv=\"refresh\" content=\"15; ../../forum.php?fehler=1\">";
}
?>
Hallo Malte,
$sql ="SELECT id, username, password FROM user WHERE 'username == ".$username."' AND 'password == ".$password."'";
*ganztiefseufz* Du hast jetzt als Bedingung sowas drinstehen: "WHERE 'string' AND 'string'" - was soll MySQL deiner Meinung nach damit machen? Du willst wohl eher vergleichen ob in der Spalte username der Inhalt aus $username steht - also wäre "... WHERE username = '".$username."' AND ..." wohl richtiger (auch meinem Hinweis auf die Vergleichsoperatoren bist du nicht gefolgt).
echo "<meta http-equiv="refresh" content="0; ../../forum.php">";
nur so am Rande bemerkt: wenn du hier ' zum Begrenzen des Strings nimmst, tust du dir leichter weil die " im String nicht mehr maskiert werden müssen:
echo '<meta http-equiv="refresh" content="0; ../../forum.php">';
Grüße aus Nürnberg
Tobias
Tag Malte.
ich habe irgendwoe in der achten Zeile, dass ist die Zeile mit dem Username einen kleinen Fehler.
$sql = sprintf("SELECT id, username, password FROM user WHERE
mysql_real_escape_string(".$_REQUEST['username']."),
mysql_real_escape_string(".$_REQUEST['password']."))";
Deine WHERE-Klausel erscheint mir nicht korrekt, irgendwie fehlt da ein Vergleich. Und die sprintf-Anweisung scheint ebenfalls nicht ganz korrekt zu sein. Was soll denn Ergebnis der Abfrage sein? Willst du nachschauen, ob es den User mit dem Passwort bereits gibt? Dann wäre sowas denkbar:
$sql = sprintf("SELECT id, username, password FROM user WHERE username='%s' AND password='%s'",
mysql_real_escape_string($_REQUEST['username']),
mysql_real_escape_string($_REQUEST['password']));
Siechfred