Mój formularz w PDO

0

Czesc, skonczylem wlasnie kurs na codeacademy. Postawilem sobie wyzwanie - a mianowicie zrobic prosty formularz i wyslac go do bazy. Calosc mialem zrobic w pdo. Nie sprawilo mi to problemu wszystko dziala dobrze, ale teraz jak to wyglada z kwestia bezpieczenstwa i ogolna poprawnoscia? Dopiero sie ucze i licze na wskazowki czego brakuje itp. A oto kod.

if (isset($_POST['submit'])){
	
	class form {
		
		public $imie;
		public $nazwisko;
		
		public function  __construct($imie, $nazwisko){
			
			$this -> imie = $imie;
			$this -> nazwisko = $nazwisko;
			
		}
		
		public function uploadform(){
            
            $db_host = 'localhost';
            $db_name = 'pdo';
            $db_user = 'root';
            $db_pass = 'xxx';
                
	  $db = new PDO(
        "mysql:host=$db_host;dbname=$db_name;charset=utf8",
        $db_user,
        $db_pass
    );
			$q = $db->prepare("INSERT INTO form (imie,nazwisko) VALUES ('$this->imie','$this->nazwisko')");
			$q -> bindParam(1, $this->imie);
			$q -> bindParam(2, $this->nazwisko);
			$q -> execute();
			echo "Super";
		}
	}
	$post1 = $_POST['imie'];
	$post2 =$_POST['nazwisko'];
	
	$forms = new form($post1,$post2);
	
	$forms -> uploadform();
}

Wiem, ze baze danych powinienem miec w osobnym pliku php i wywolac ja tylko za pomoca:

$db = new db()

Lecz co z pozostala kwestia kodu?

0
  1. Klasy twórz w osobnych plikach.
  2. Do obsługi bazy danych użyj osobnej klasy.
  3. Używasz surowych danych z POST'a. Można tam wrzucić cokolwiek.
  4. Bindowanie:
$q = $db->prepare("INSERT INTO form (imie,nazwisko) VALUES (? , ?)");
$q -> bindParam(1, $this->imie);
$q -> bindParam(2, $this->nazwisko);
$q -> execute();

Albo tak:

$q = $db->prepare("INSERT INTO form (imie,nazwisko) VALUES (:imie, :nazwisko)");
$q -> bindParam(':imie', $this->imie);
$q -> bindParam(':nazwisko', $this->nazwisko);
$q -> execute();

Można krócej, w zależności, którą z powyższych opcji wybierzesz.

$q = $db->prepare("INSERT INTO form (imie,nazwisko) VALUES (? , ?)");
$q->execute(array($imie, $nazwisko));
$q = $db->prepare("INSERT INTO form (imie,nazwisko) VALUES (:imie, :nazwisko)");
$q->execute(array(':imie' => $imie, ':nazwisko' => $nazwisko));

1 użytkowników online, w tym zalogowanych: 0, gości: 1