Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Koko POST-taulukko kerralla kantaan?

tesmu [07.04.2010 13:36:51]

#

Minulla on kehitteillä melkosen laaja systeemi (Yli 20000 riviä koodia internetsovelluksessa)

Kuitenkin heräsi kysymys. Minulla on esimerkiksi tietokannassa yritystietotaulu, jossa on suhteellisen paljon sarakkeita minkä arvot pitäisi täyttää.

Noh kehittelin tälläisen koodin jolla voin suoraan $_POST-taulukosta täyttää tietokantaan tarvittavat

<?php

	include_once("category_lib.php");
	include_once("dbconn.php");
	include_once("user_lib.php");
	include_once("functions.php");


	dbconn();
	if (is_logged($_COOKIE)) {
		$uid = idbyuser($_COOKIE['user']);

	}
	$qr = "INSERT INTO company_registration (uid, ";
	foreach ($_POST as $key => $value) {
		$qr .= $key .",";
	}

	$qr = substr($qr, 0, strlen($qr)-1);
	$qr .= ") VALUES('{$uid}', ";
	foreach ($_POST as $key => $value) {
		$qr .= "'" .$value ."' ,";
	}
	$qr = substr($qr, 0, strlen($qr)-1);
	$qr .= ")";


	do_sqlquery($qr);

	header("Location: index.php?page=confirmcompany");

?>

Mutta omanikin järkeni sanoo, että tuo ei ole ehkä turvallisin ratkaisu. Mitenkä te toteuttaisitte isojen lomakkeiden täyttämisen ja niiden viemisen tietokantaan? Tai parantaisitte tätä koodia, jotta se olisi turvallisempi. (Mielummin jälkimmäinen niin ei tarvitse isompia muutoksia tehdä)

trilog [07.04.2010 13:49:29]

#

Escapoit jokaisen tietokantaan menevän tiedon (MySQL:n tapauksessa: https://www.php.net/manual/en/function.mysql-real-escape-string.php).

Hyvä vaihtoehto olisi käyttää jotakin järkevää rajapintaa tietokantaan, kuten vaikka PDO:ta. Lomakeluokka-koodivinkin soveltaminen tähän voisi olla myös hyvä, sillä voisit tallettaa elementti-oliot taulukkoon ja niitä läpi käymällä saada tietokannan arvot, ja tässä säästyisit myös lomakkeiden "käsin" kirjoittamiselta.

Vastaus

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

Tietoa sivustosta