AMcoder - javascript, python, java, html, php, sql

ադմինիստրատորի և օգտագործողի մուտքի ձև

Բարև, որևէ մեկը կարող է տեսնել, թե ինչ եմ սխալ անում: Ես օգտագործում եմ մեկ մուտք և՛ օգտվողի, և՛ ադմինիստրատորի համար, և այն ինձ ուղղորդում է ադմինիստրատորի էջ, բայց երբ ես մուտքագրում եմ օգտվողի անուն և գաղտնաբառ, այն ասում է, որ օգտվողի անունը և գաղտնաբառը սխալ են: Սրա հետ ժամերով խառնվել եք:

PHP Ֆայլ՝

<?php

if(isset($_POST['Submit']))   //Check if the login form has been submitted
{   
    include ('dbconnection.php');

    //Get the values from the new user form
    $pw = md5($_POST['Password']); //Note use of MD5 hash function
    $username = $_POST['UserName'];

    //Set up and execute the INSERT query
    $query = "SELECT * FROM users Where UserName = '$username' AND Password ='$pw' AND Role = 'User' ";
    $result=mysql_query($query);  //Get the query result
    $num=mysql_numrows($result);  //Get number of records returned 


    if ($num)  //Logon is successful - redirect to restricted home page
    {
        session_start();
        $_SESSION['UserId']=$username; //Save the username in a session variable
        mysql_close($connection); //close database connection
            header("Location: Index.php?Successful"); //display the restricted page

    }
    else    //Logon has failed - reload the logon page
    {
    mysql_close($connection);//close database connection
        header("Location: Emersrecipes.php?err"); //id user does not exist in db directs back to login page with an error   

    }
}
?>

<?php

if(isset($_POST['Submit']))   //Check if the login form has been submitted
{   
    include ('dbconnection.php');

    //Get the values from the new user form
    $pw = md5($_POST['Password']); //Note use of MD5 hash function
    $username = $_POST['UserName'];

    //Set up and execute the INSERT query
    $query = "SELECT * FROM users Where UserName = '$username' AND Password ='$pw' AND Role = 'Administrator' ";
    $result=mysql_query($query);  //Get the query result
    $num=mysql_numrows($result);  //Get number of records returned 


    if ($num)  //Logon is successful - redirect to restricted home page
    {
        session_start();
        $_SESSION['UserId']=$username; //Save the username in a session variable
        mysql_close($connection); //close database connection
            header("Location: Admin\admin.php?Successful"); //display the restricted page

    }
    else    //Logon has failed - reload the logon page
    {
    mysql_close($connection);//close database connection
        header("Location: Emersrecipes.php?err"); //id user does not exist in db directs back to login page with an error   

    }
}
?>

HTML ՁԵՎ

<div class = 'grd6'>

            <article>
            <p>Welcome today is <?php echo date ('M j, Y');?></P>
            </article>
            <form class = 'loginform' method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" name="loginform">
            <h2>User Login Form</h2>
            Username:<input name="UserName" type="text"   size="30" maxlength="30" placeholder='Enter Your Name' required/><br />
            Password:<input name="Password" type="Password" placeholder= 'Enter your password' required  size="30" maxlength="30" /><br /><p>
            <input name="Submit" type="Submit" value="Login" />
            <?php include ('php\Login.php')?>
            </form>     
            </div>
04.05.2014

  • Ձեր կոդը խոցելի է SQL ներարկումների համար: Դուք պետք է կարդաք ինչպես կանխել դրանք PHP-ում: 04.05.2014
  • mysql_num_rows. Միացրեք սխալի մասին հաղորդումը 04.05.2014
  • 1. SQL ներարկում 2. օգտատերերի մուտքագրումից տողերի փախուստի բացակայություն 3. header()-ից հետո ոչ exit; 4. md5-ի օգտագործում 5. կոդի ոճ.. Շատ բաներ երիտասարդների համար բարելավելու համար: 04.05.2014
  • Ես գիտեմ, որ ես բաց եմ sql ներարկման համար, որը պատրաստվում էր ավելի ուշ դնել պահպանված ընթացակարգի մեջ: Ամեն դեպքում շնորհակալ եմ 04.05.2014

Պատասխանները:


1

դուք կարող եք փոքրացնել ձեր կոդը այսպես

if(isset($_POST['Submit']))
{   
include ('dbconnection.php');
$pw = md5($_POST['Password']); 
$username = mysql_real_escape_string($_POST['UserName']);
//mysql_real_escape_string wont save you from sql injection so user PDO/mysqli

$query = "SELECT * FROM users Where UserName = '$username' AND Password ='$pw'";
$result=mysql_query($query);  
$num=mysql_numrows($result);  

if ($num>0) 
{
  $row= mysql_fetch_assoc($result);
  if($row['role']=='Administrator')
  {
   //Admin login
  }   
  if($row['role']=='User')
  {
   //user login
  }
}
04.05.2014
  • Հիանալի է, որ աշխատում է, շնորհակալություն, որտե՞ղ կարող եմ տեղադրել իմ սխալը և վերահղել դեպի գլխավոր էջ, ապա այլապես //Մուտքը ձախողվել է. վերաբեռնել մուտքի էջը { mysql_close($connection);//փակել տվյալների բազայի կապի վերնագիրը (Գտնվելու վայրը՝ Emersrecipes.php?err) ; //id օգտվողը գոյություն չունի db ուղղորդում սխալով հետ մուտքի էջ } 04.05.2014
  • սրանք մյուս մասում գրիր, մոռացել էի գրել :D 04.05.2014
  • ես դրանք դրեցի այլ մասում, և դա ստիպում է նորից չաշխատել, վերադառնում է նախկինի պես, կներեք, որ ես իսկապես նոր եմ php-ում: ցանկացած օգնություն իսկապես գնահատելի է 04.05.2014
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..