צפיות
תשובות
שאלה – PHP
עשיתי קוד של התחברות למערכת באמצעות מסד נתונים MySQL.
כאשר אני מריץ שאילתת SELECT עם WHERE של שם המשתמש משום מה, המחשב כאילו מתעלם מה – WHERE, ואפילו אם אני רושם שם משתמש שלא קיים וסיסמא נכונה, אז זה פועל.
מה עשיתי לא נכון?
הקוד:
<?
if (isset($_POST["fill"]))
{
if (isset($_POST["usr"]) && isset($_POST["pass"]))
{
include("functions.php");
getfromdb("localhost","Admin","omer","db","*","Members","Username='".$_POST["usr"]."'","");
if (mysql_num_rows($result)!=0)
{
$rs=mysql_fetch_array($result);
if ($rs["Password"]==$_POST["pass"])
{
echo "Password correct. You are connected to the website.";
}
else
{
echo "Password incorrect.";
}
}
else
{
echo "Username incorrect.";
}
}
else
{
echo "Please fill all fields.";
}
}
?>
דף הפונקציות (functions.php):
<?
function getfromdb($server,$user,$pass,$dbname,$select,$table,$where,$order)
{
global $result;
$dbh=mysql_pconnect ($server,$user,$pass) or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ($dbname);
$tsql="SELECT $select FROM $table";
if ($where!="")
$tsql.=" WHERE $where";
if ($order!="")
$tsql.=" ORDERBY $order";
$result=mysql_query("SELECT $select FROM $table",$dbh);
if (!$result)
echo "ERROR: error occured in MySQL query.";
}
?>
תודה,
עומר.
3 תשובות
מישהו? בבקשה?
ב PHP אני לא מבין, אבל ב SQL כן.
איך נראית השאילתה שלך בסוף, כשהיא מגיעה למסד הנתונים?
לא חשוב – פתרתי
פתרתי את הבעיה
היתה לי טעות קטנה בקובץ הפונקציות:
<?
function getfromdb($server,$user,$pass,$dbname,$select,$table,$where,$order)
{
global $result;
$dbh=mysql_pconnect ($server,$user,$pass) or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ($dbname);
$tsql="SELECT $select FROM $table";
if ($where!="")
$tsql.=" WHERE $where";
if ($order!="")
$tsql.=" ORDERBY $order";
$result=mysql_query("SELECT $select FROM $table",$dbh);
if (!$result)
echo "ERROR: error occured in MySQL query.";
}
?>
בטעות לא השתמשתי במשתנה שאוגר את משפט השאילתה בשורה הבאה:
$result=mysql_query("SELECT $select FROM $table",$dbh);
זה היה צריך להיות ככה:
$result=mysql_query($tsql,$dbh);
כן… טעות טיפשית אני יודע.
תודה בכל מקרה,
עומר.