2016-12-11 6 views
0

私は現在、プロジェクトのバックエンドで、カテゴリのメニューまたはサブmen menuesを追加または削除できる電子商取引プロジェクトに取り組んでいます。未定義関数を呼び出すsanitize()

私はDLLは、私がここで

Fatal error: Call to undefined function sanitize() in C:\xampp\htdocs\project\admin\categories.php on line 15

を得ているエラーコード

<?php 
require_once $_SERVER['DOCUMENT_ROOT'].'/project/core/init.php'; 
include 'includes/head.php'; 
include 'includes/navigation.php'; 

$sql = "SELECT * FROM categories WHERE parent = 0"; 
$result = $db->query($sql); 
$errors = array(); 
// when the form is cick process 

$Category = ''; 
$parent= ''; 

if(isset($_POST) && !empty($_POST)){ 
    $parent = sanitize($_POST['parent']); 
    $category = sanitize($_POST['category']); 
    $sqlform = "SELECT * FROM categories WHERE category ='$category' AND parent = '$parent'"; 
    $fresult = $db->query($sqlform); 
    $count = mysqli_num_rows($fresult); 
//if category is blank 

if($category == ''){ 
    $errors[] .= 'The category cannot be left blank'; 
    } 

//if it already exixt in database 
if($count > 0){ 
    $errors[] .= $category.' Already exits please choose a new category'; 
} 
//display error or update database 
if(!empty($errors)){ 
$display = display_errors($errors);?> 
<script> 
    jQuery('document').ready(function(){ 
    jQuery ('#errors').html('<?php $display;?>'); 

    }); 

</script> 


<?php } else{ 
//update database 
$updatesql = "INSERT INTO categories(category,parent)VALUES ('$category','$parent')"; 
$db->query($updatesql); 
header('location:categories.php'); 
} 
} 


?> 
+3

エラーはかなり直接的なようです。 'sanitize'関数は定義されていません。その機能の計画は、SQLインジェクションやXSSインジェクションを防止する計画ですか? SQLの場合はそれを取り除き、パラメータ化されたクエリを使用します。 – chris85

答えて

0

でのITはsanitizeが定義されていない、と私には思わ

を有効にしているチェックしています範囲内。これは標準関数ではないので、コード内のどこかにあるはずです。あなたは、ほとんどの場合、このようなmysqli_real_escape_stringで直接置き換えることができます:

$parent = mysqli_real_escape_string($_POST['parent']); 
$category = mysqli_real_escape_string($_POST['category']); 

You should use PDO instead, that would be much better!

は、この情報がお役に立てば幸い!

+0

前の関数の使用状況が不明な場合は、関数のスワップをお勧めしません。 mysqli_real_escape_stringには接続文字列も必要です。 'mysqli'よりも' PDO'がはるかに優れているのはなぜですか?どちらもパラメータ化されたクエリをサポートしています。 – chris85

関連する問題