Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: ` ja {} tekstissä (SQL-kyselyssä)

Sivun loppuun

Paulus M [19.10.2009 20:25:10]

#

Mun täytyy muokata yhtä PHP koodia ja en millään keksi, että miten tulkitaan tälläinen lauseessa oleva kohta `${table}_pages`:

$sql = "UPDATE `${table}_pages` SET se=se+1 WHERE id=$pageid;";

Eli miksi siinä käytetään noin ihmeellisiä lainausmerkkejä ja minkäläiseen muuttujaan toi voi viitata php koodissa? tällaiseen taulukkoon joka on nimellä
$table?
Yritin hakea kaikkia viittauksia tuohon, mutta en meinaa oikein saada varmuutta, että miten toi rakenne toimii ja miten tuossa esiintyvät heittomerkit ja aaltosulut toimii SQL kyselyn kanssa?

Metabolix [19.10.2009 20:27:26]

#

`-merkit ovat osa MySQL-lausetta. ${table} viittaa muuttujaan $table. (Ilman sulkuja muuttujaksi tulkittaisiin koko $table_pages.) Jos siis $table sisältää sanan "PUTKA" ja $pageid on 123, tuloksena on

$sql = "UPDATE `PUTKA_pages` SET se=se+1 WHERE id=123;";

SQL-lause korottaa yhdellä se-kentän arvoa PUTKA_pages-taulussa rivillä, jonka id on 123.

Teuro [19.10.2009 20:29:16]

#

Ehkäpä siinä on tarkoitettu seuraavanlaista koodia?

<?php
$sql = "UPDATE {$table_pages} SET se=" . ($se+1) . " WHERE id={$pageid}";
echo $sql;
?>

peg [19.10.2009 22:11:31]

#

Ei vaan noin kuin Metabolix selitti.
{$table_pages} on eri asia kuin
${table}_pages

Paulus M [19.10.2009 23:08:07]

#

Kiitoksia jälleen Metabolix loistavasta vastauksesta!

Wabbit [21.10.2009 16:40:34]

#

miten tuo sql-injection toimii php:ssä, onko siinä samoja konnakoukkuja kuin MS SQL?

Grez [21.10.2009 16:52:16]

#

No PHP:stähän voi käyttää MS SQL:ää ja varmaan kymmentä muuta tietokantaa.

Sinänsä SQL-injektion välttämisessä on huomioitavat asiat pääpiirteissään samat kaikissa tietokannoissa.

Wabbit [25.10.2009 05:09:21]

#

Kiitoksia vastauksest Grez, eli oli pakko saada tietää kerta SQL niin siinä ns. hakkerit yrittää käyttää SQL injection esim c# url hakkerointa ja halusin tietää että toimiiko se samalla tavalla kuin PHP.

Grez [25.10.2009 08:19:47]

#

MS SQL:llä tarkoitetaan normaalisti Microsoftin SQL serveriä. Jos tarkoitit, että toimiiko hakkerointi samalla tavalla, kuin jossain MS:n ohjelmointiympäristössä, jota et alunperin maininnut, niin kysymys oli harvinaisen epäselvä.

En välttämättä vieläkään ole varma, mitä kysyt, koska "C# url hakkerointi" ei ole ainakaan mikään yleisesti tunnettu termi (Google sanoo: Ei tuloksia hakusanoilla "C# url hacking".) C#:ssakin on useita eri tapoja käyttää SQL-kantoja, ja joissakin tavoissa injektioiden estäminen on ohjelmoijan vastuulla ja joissakin järjestelmä pitää ainakin jossain määrin huolen siitä. Samoin PHP:ssä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta