Jump to content
php.lv forumi

php papildus info


Amerika

Recommended Posts

  • Replies 39
  • Created
  • Last Reply

Top Posters In This Topic

$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.

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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

Link to comment
Share on other sites

$_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
Link to comment
Share on other sites

$_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!

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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. :)

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

×
×
  • Create New...