Cibiņš Posted October 13, 2009 Report Share Posted October 13, 2009 (edited) 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 October 13, 2009 by MCWeb.lv Quote Link to comment Share on other sites More sharing options...
aterins Posted October 13, 2009 Report Share Posted October 13, 2009 nu kā. šobrīd tu dari: 1. izvelc vecos datus, ja tadi ir 2. saglaba redigetos datus 3. atspogulo vecos datus respektivi, update sekcija jaliek pirmā. Quote Link to comment Share on other sites More sharing options...
thesnarkie Posted October 14, 2009 Report Share Posted October 14, 2009 Man patīk kā tu pelni naudu uz to rēķina, kas tev palīdz. (: Quote Link to comment Share on other sites More sharing options...
v3rb0 Posted October 14, 2009 Report Share Posted October 14, 2009 ak dies, te vismaz divi caurumi - gan sql galā, gan klienta galā. Quote Link to comment Share on other sites More sharing options...
briedis Posted October 14, 2009 Report Share Posted October 14, 2009 nu pāris sql injekciju caurumi, kas tur dižs :) Quote Link to comment Share on other sites More sharing options...
Cibiņš Posted October 14, 2009 Author Report Share Posted October 14, 2009 (edited) nu pāris sql injekciju caurumi, kas tur dižs :) 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? Edited October 14, 2009 by MCWeb.lv Quote Link to comment Share on other sites More sharing options...
marcis Posted October 14, 2009 Report Share Posted October 14, 2009 http://en.wikipedia.org/wiki/SQL_injection Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted October 14, 2009 Report Share Posted October 14, 2009 http://php.lv/f/topic/14308-dokumentipamacibas-par-php-un-web-aplikaciju-drosibu/ Quote Link to comment Share on other sites More sharing options...
briedis Posted October 14, 2009 Report Share Posted October 14, 2009 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... Quote Link to comment Share on other sites More sharing options...
Cibiņš Posted October 14, 2009 Author Report Share Posted October 14, 2009 (edited) 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 October 14, 2009 by MCWeb.lv Quote Link to comment Share on other sites More sharing options...
briedis Posted October 14, 2009 Report Share Posted October 14, 2009 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 Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted October 14, 2009 Report Share Posted October 14, 2009 Vai arī izmanto "prepared" vaicājumus: mysqli_prepare() Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.