2016-04-06 17 views
-1

を存在する場合、サブジェクト名はすでにPHPにSQLインジェクションのためのプリペアドステートメントを使用して、存在しているかどうかの確認、サブジェクト名を確認します。PHP MySQLは、すでに私のコードは動作しません

コード:常に

<?php 
if($_GET["action"] == "post") { 
$servername = "localhost"; 
$username = "MY DB"; 
$password = "MY PASS"; 
$dbname = "MY DB"; 
// Create connection 
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$checkSubject = $conn->prepare("SELECT * FROM IndexData WHERE SubjectName = ?"); 
$checkSubject->bind_param('s', $_POST['filename']); 
$checkSubject->execute(); 
$checkSubject->store_result(); 
$countSubject = $checkSubject->num_rows; 
//Create or Edit Files 
    if(strlen($_POST['filename']) <= 30 && strlen($_POST['filename']) >= 8 && strlen($_POST['comment']) >= 100 && strlen($_POST['comment']) <= 5000 && strlen($_POST['description']) >= 50 && strlen($_POST['description']) <= 500 && strlen($_POST['userSName']) >= 10 && strlen($_POST['userSName']) <= 20) { 
if ($countSubject > 0) { 
    $echoTxt = " <pre>Subject Has Been Posted! 
    Link: <a href=\"Code-Blog-Index-Posts.php?SubjectName=" . $_POST['filename'] . "\" target=\"_blank\">Click Me</a></pre> <br>"; 
    require("CreateDataPosts.php"); 
} else { 
    $echoTxt = die("<pre>[ERROR]Subject Already Exist!</pre>"); 
} 
    } else { 
    echo "<pre><span class=\"error\">Subject must Greater than 8 and Less than 30 characters</span></pre>"; 
    echo "<pre><span class=\"error\">Post must Greater than 100 and Less than 5000 characters</span></pre>"; 
    echo "<pre><span class=\"error\">Description must Greater than 50 and Less than 500 characters</span></pre>"; 
    die(); 
} 



echo $echoTxt; 
echo "<a name=\"PostResult\"></a>"; 
$countSubject->close(); 
$conn->close(); 
} 
?> 

それを返します〜0
私はなぜか分からないが 私はあなたがそれを解決することができますことを願って!、ありがとう!

+1

' $ _POST [「ファイル名が」] '*ゾクゾクを返す必要があります。フォームがどのように見えるのかを確認せずに確実に言うのは難しいです。 –

+0

私はそれにフォームを使用します。例: '' – CharlesCraft50

+1

これは疑わしい 'if($ _GET [" action "] ==" post ")'です。エラー報告とクエリのエラーもチェックしてください。 –

答えて

1

まず、同じ名前のフィールドがあるかどうかを確認します。だからあなたのクエリは、それが最も可能性が高い `$ _FILES`にする必要があるとして、0または1

# IF VALUE = 0/FIELD NOT FOUND - NO EXISTS 

if($countSubject == 0) 
{ 

    # the query needs to return 0 to post the new subject, if the returned value is over 0, so exists 

    $echoTxt = "<pre>Subject Has Been Posted! Link: <a href=\"Code-Blog-Index-Posts.php?SubjectName=" . $_POST['filename'] . "\" target=\"_blank\">Click Me</a></pre> <br>"; 

    require("CreateDataPosts.php"); 

} 
else $echoTxt = die("<pre>[ERROR]Subject Already Exist!</pre>"); 
私*スパイダーマンの理にかなって
+0

このような偉大な答え!、ありがとうございます:D – CharlesCraft50

+0

それは、ありがとう、ありがとうございます! – CharlesCraft50

関連する問題