שלח תשובה

זירת השאלות

487
צפיות
3
תשובות

שאלה – PHP

,‏ 26 בנובמבר, 2004

עשיתי קוד של התחברות למערכת באמצעות מסד נתונים 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 תשובות

  1. זהר פלד הגיב:

    ב PHP אני לא מבין, אבל ב SQL כן.
    איך נראית השאילתה שלך בסוף, כשהיא מגיעה למסד הנתונים?

  2. omer הגיב:

    לא חשוב – פתרתי
    פתרתי את הבעיה

    היתה לי טעות קטנה בקובץ הפונקציות:


    <?
    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);

    כן… טעות טיפשית אני יודע.

    תודה בכל מקרה,

    עומר.

שלח תשובה