Nasıl bir web uygulamasının veri depolamak ve kaçmak için?

0 Cevap php

Benim veritabanları ve web uygulamaları içine benim veri depolamak için daha resmen doğru ve indipendent çözüm arıyorum. Ben birkaç ay içinde bir sürü görüş duydum, ama ben cadı doğru olduğundan emin değilim. Ben bu veritabanında gerçek ve çıkmamış veri depolamak için daha uygun olduğunu düşünüyorum benim webapp daha ölçeklenebilir yapmak için planlama, o ile kabul edilir?

Now I'm using this solution, an example with PHP5, XHTML and MySQLi pseudo-code. I'm using everywhere UTF-8 and no magic_quotes.

Veri işleme:

<?php
// catching data from a simple input form
$id_profile         = $_POST['id_profile'];
$details['name']        = $_POST['name'];
$details['text']            = $_POST['text'];

// filter $details
foreach($details as &$item) {   $item = trim($item); /* some stuff and other filters but no addslashes() */ }

// Preparing and doing the query
$stmt = $mysqli->prepare("
    UPDATE      profiles
    SET         name = ?, text = ?
    WHERE       id_profile = ?  ");
$stmt->bind_param('ssi', $details['name'], $details['text'], $id_profile);
$stmt->execute();
// [...]

Yani benim veritabanında ben gerçek girilen veri yok backslashed var. Ben sayfamda bir noktasında çıkış benim metin (dahil formlar, tablolar, düğmeler, giriş, şifre alanları ve DOM niteliklerini tüm) gerektiğinde Sonra kaçmak için bu küçük işlevi kullanın:

<?php

//a little escape function
function e($s) { return htmlentities($s, ENT_QUOTES, 'UTF-8'); }

// Preparing and doing the query
$stmt = $mysqli->prepare("
        SELECT      name, text
        FROM        profiles
        WHERE       id_profile = ?  ");
$stmt->bind_param('i', $_POST['id_profile']);
$stmt->execute();
$stmt->bind_result($name, $text);

?>

<input type="text" id="name" value="<?=e($name) ?>"> <br />
<input type="text" id="text" value="<?=e($text) ?>"> <br />

<table>
<tr>
  <td><?=e($name) ?></td>
  <td><?=e($text) ?></td>
<td>

Bu, doğru, eksiksiz ve güvenli midir? Bazı suggesions?

0 Cevap