Jump to content
php.lv forumi

Nevelk no db pie rediģēšanas.


Cibiņš

Recommended Posts

Sveicināti atkal! Tātad kārtējā problēma:

 

Nevelk datus no datubāzes, tiklīdz tos rediģē. Nostrādā jau UPDATE un dati tiek pārnesti uz datubāzi, bet momentā nevelk datus no datubāzes, tiklīdz Submit poga ir bijusi nospiesta. Tikai nospiežot F5 taustiņu vai refrešojot lapu dati tiek izvilkti. Kas par vainu??

edit.php

 

<?php
if (!isset($_REQUEST['Msg'])) exit;

   $result = mysql_query("SELECT Title, Message FROM pg_home_data WHERE ID = {$_REQUEST['Msg']};");
   if (!$result) exit;
   if (!mysql_num_rows($result)) exit;
   extract(mysql_fetch_array($result), EXTR_PREFIX_ALL, 'msg');
   if (isset($_POST['Title'])) {

       $Title = $_POST['Title'];
       $Message = $_POST['Message'];

     if (($Title == '') || ($Message == ''))
{
echo "ERROR!!! All Fields Must be filled!!!";
}
else {
     mysql_query("UPDATE pg_home_data SET Title = '$Title', Message = '$Message' WHERE ID = {$_POST['Msg']};");
           echo "Raksts rediģēts sekmīgi!<br /><br />";
           echo "<a class=\"actLinks232\" href=\"?pg=homeEdit&MBID=1\">Rakstu sÄkumlapa</a><br /><br />";
       }
   }
include ('editForm.php');
?>

 

editForm.php

 

<form method="post" action="?pg=edit">
Message title: <textarea id="themeBlack" name="Title" rows="10" cols="40"><?php echo $msg_Title; ?></textarea><br /><br />
Message:<br />
<textarea id="themeBlack1" name="Message" rows="10" cols="40"><?php echo $msg_Message; ?></textarea><br /><br />
<input type="hidden" name="MBID" value="<?php echo $_REQUEST['MBID']; ?>" />
<input type="hidden" name="Msg" value="<?php echo $_REQUEST['Msg']; ?>" />
<input type="submit" value="Edit" />
</form>

Edited by MCWeb.lv
Link to comment
Share on other sites

mysql_real_escape_string lieto tikai pie datu pārbaudes vai arī ievadīšanas datubāzē? Kā īsti notiek sql injicēšana? Kā pats to var notestēt?

 

To lieto pie jebkuriem nedroša avota datiem ko liec datubāzē.

 

piemēram, tu raksti kvēriju:

 

$id = "1' OR id > '1";

SELECT * FROM TABLE WHERE id = '$id'

 

rezultātā reālais kvērijs:

SELECT * FROM TABLE WHERE id = '1' OR id > '1'

 

nu šitais vēl tāds maigs piemērs. Netā var ļoti daudz info atrast...

Link to comment
Share on other sites

To lieto pie jebkuriem nedroša avota datiem ko liec datubāzē.

 

piemēram, tu raksti kvēriju:

 

$id = "1' OR id > '1";

SELECT * FROM TABLE WHERE id = '$id'

 

rezultātā reālais kvērijs:

SELECT * FROM TABLE WHERE id = '1' OR id > '1'

 

nu šitais vēl tāds maigs piemērs. Netā var ļoti daudz info atrast...

 

Bet piemēram šitāds te datu atspoguļošanas skripts ir derīgs, ja tas real escape tiek likts iekavās pirms datu izvilkšanas? Aizsargā injicēšanu?

 

$result = mysql_query(stripslashes(mysql_real_escape_string("SELECT * FROM tabula WHERE id='numurs'")));

Edited by MCWeb.lv
Link to comment
Share on other sites

mysql_real.... pieliek priekšā slashus jūtīgajiem simboliem (pēdiņas utt).

Tas ko uzrakstīji ir pilnīgas muļķības.

Pirmkārt, tev ir jāizmanto tā funkcija tikai ievietojamajām vērtībām, nevis visam kvērijam

Otrkārt, mysql_real... pieliek slešus un ar striplsashes tu viņus noņem.

 

$query = "SELECT * FROM table WHERE id = '" . mysql_real_escape_string($id) . "'";

 

Bitītmatos, palasi tak dokumentāciju, php.net sniegtos paraugus. Tas būs daudz ātrāk un pašam ar smadzene pakustēsies.

http://www.lmgtfy.com?q=php+mysql_real_escape_string

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...