Jump to content
php.lv forumi

Recommended Posts

  • Replies 39
  • Created
  • Last Reply

Top Posters In This Topic

Posted

$limits = 10;
$data3 = mysql_query("SELECT COUNT(*) FROM news_comments WHERE news_id = '$_GET[n]'");
$row3 = mysql_fetch_array($data3);
$lpp = $_GET['lpp'];
$ceil = ceil($row3['COUNT(*)']/$limits);
$OFFSET = $lpp*$limits-$limits;
$data4 = mysql_query("SELECT * FROM news_comments WHERE news_id = '$_GET[n]' LIMIT $OFFSET,$limits") or die(mysql_error());
$sql_inj = mysql_real_escape_string($_GET[n]);

Cik sapratu tad $sql_inj rindiņa tiek galā ar injekciju. Problēma ar for.

$page = 1;
for( $adrpage = 1; $adrpage < $ceil; $adrpage++) {
echo '<a href="', '?n=' , $_GET[n] , '&lpp=' , $adrpage ,'">' . $page . '</a>';
$page++;
}

Ieliekot $adrpage = 1; sākas pirmais ieraksts ar 1, bet nav vairs 2 lapušu, tādēļ ka for tāpat sāk ar 0 skaitīt lapuses. Php.net neatradu to kā nomainīt, ka sākas viss ar 1, bet tikai to ka viņš turpinās tālāko funkciju ar 1.

Posted

Kāda jēga no tā $sql_inj mainīgā?

 

Tev jāsaprot kā darboties ar mainīgjaiem -

 

$drosha_vertiba = mysql_real_..($nedrosha_vertiba_kas_nak_no_lietotaja);


mysql_query("SELECT * FROM blabla WHERE bla = $drosha_vertiba ";

 

 

Bet tu uzrakstīji:

 



mysql_query("SELECT .. WHERE bla = $nedrosha_vertiba");
$pilnigs_randoms_kas_nekur_talak_netiek_izmantots = mysql_real_esc...($nedrosha_vertiba)

 

 

Izprati starpību?

Posted (edited)

http://www.tizag.com...l-injection.php

Mazliet ne tā uzrakstīju. Pēc šī varianta skatījos un tad ir jābūt šādi?

$limits = 10;
$data3 = mysql_query("SELECT COUNT(*) FROM news_comments WHERE news_id = '$_GET[n]'");
$row3 = mysql_fetch_array($data3);
$lpp = $_GET['lpp'];
$ceil = ceil($row3['COUNT(*)']/$limits);
$OFFSET = $lpp*$limits-$limits;
$data4 = mysql_query("SELECT * FROM news_comments WHERE news_id = '$_GET[n]' LIMIT $OFFSET,$limits") or die(mysql_error());
$_GET[n] = mysql_real_escape_string($_GET[n]);

Edited by Amerika
Posted

iedomājies ka mysql_real_escape_string ir prezervatīvs un mysql_query sekss.. kādēļ tu prezervatīvu gribi uzvilkt pēc seksa? :D ceru ka sapratīsi šo piemēru..

 

Hahaha, šitais labs salīdzinājums :D

Posted (edited)

$_GET[n] = mysql_real_escape_string($_GET[n]);
$query = "SELECT * FROM news_comments WHERE news_id = '$_GET[n]' LIMIT $OFFSET,$limits";
$execute = mysql_query ($query);

Šādi ? :)

Edited by Amerika
Posted

$_GET[n] = mysql_real_escape_string($_GET[n]);
$query = "SELECT * FROM news_comments WHERE news_id = '$_GET[n]' LIMIT $OFFSET,$limits";
$execute = mysql_query ($query);

Šādi ? :)

 

Jau labāk, bet labāk neaiztiec/nemaini $_GET mainīgos

 

$news_id = mysql_real_escape_string($_GET['n']);

 

Kā arī, kad piekļūst indeksam, tā tekstuālo vērtību vienmēr liec pēdiņās! $_GET[blabla] <-- SLIKTI! $_GET['blabla'] LABI!

Posted

Nē, es domāju tā, ka tu izmanto tikai lai iegūtu vērtību, nevis tur ierakstītu. Tas pats attiecas uz $_POST masīvu

 

Pareizs pielietojums (tikai nolasīšana):

 

$mainigais = $_GET['mainigais'];

if($_GET['kkas']){ ..

 

Nepareizs (ierakstīšana):

 

$_GET['kkas'] = kautkascits

Posted (edited)

Kā arī, kad piekļūst indeksam, tā tekstuālo vērtību vienmēr liec pēdiņās! $_GET[blabla] <-- SLIKTI! $_GET['blabla'] LABI!

Mainīju visu kodu bet neiet pie indeksa.

$_GET['n'] = mysql_real_escape_string($_GET['n']);
$query = "SELECT * FROM news_comments WHERE news_id = '$_GET[n]' LIMIT $OFFSET,$limits";
$data4 = mysql_query ($query)  or die(mysql_error());

Ja es mainu $_GET[n] uz $_GET['n'], kas atrodās $query tad skripts crasho, balts ekrāns. Nav domāts tā vai kā?

 

Bet atradu risinājumu '".$_GET['n']."' Tā ir pareizi rakstīt indeksā, jo iet?

 

Kā arī prasu par for atkal.

$page = 1;
for( $adrpage = 0; $adrpage < $ceil; $adrpage++) {
echo '<a href="', '?n=' , $_GET['n'] , '&lpp=' , $adrpage ,'">' . $page . '</a>';
$page++;
}

Ieliekot $adrpage = 1; sākas pirmais ieraksts ar 1, bet nav vairs 2 lapušu, tādēļ ka for tāpat sāk ar 0 skaitīt lapuses. Php.net neatradu to kā nomainīt, ka sākas viss ar 1, bet tikai to ka viņš turpinās tālāko funkciju ar 1.

Edited by Amerika
Posted

Nu kamōn...

 

$news_id = mysql_real_escape_string($_GET['n']);
$query = "SELECT * FROM news_comments WHERE news_id = '$news_id' LIMIT $OFFSET,$limits";
$data4 = mysql_query ($query)  or die(mysql_error());

Posted

Nu kamōn...

 

$news_id = mysql_real_escape_string($_GET['n']);
$query = "SELECT * FROM news_comments WHERE news_id = '$news_id' LIMIT $OFFSET,$limits";
$data4 = mysql_query ($query)  or die(mysql_error());

izmantoju šo variantu '".$_GET['n']."' ar ko viss iet. Kā arī atrisināju for problēmu $adrpage < $ceil vietā ieliku $adrpage <= $ceil

Paldies par atsaucību briedi. :)

Posted (edited)

Kāpēc, Tu baidies definēt jaunus mainīgos?

*Nav garumzimes paslaik.

Varetu pateikt ko tu ar to doma un neatceros, ka butu baidijies kautko rakstit. :)

Edited by Amerika
Posted (edited)

$_GET['n'] = mysql_real_escape_string($_GET['n']);

 

vietā kāpec tu neizmanto -

 

$variable = mysql_real_escape_string($_GET['n']);
Edited by y2ok
Guest
This topic is now closed to further replies.

×
×
  • Create New...