2017-06-26 14 views
0

私のPHPコードがうまく動作しないような問題が発生しました。何度も何度も見てきました。私はそれを理解できません。私は、私の製品(ウェブサイト)の潜在的なユーザーがコメディやライブバンドなどのタイプでイベントを検索することを許可するプロジェクトに取り組んでいます。これにより、ユーザーは、彼らは表示するために入力します。検索PHPコードが正しく動作しないのはなぜですか?

これまでのところ、私はこのコードを作成しました:

<?php 

//$output= NULL; 

if(isset($_POST['submit'])){ 
    //connect db 
    require_once('connect.php'); 
    $search = $_POST['search']; 

    //query db 
    $result = $mysqli->query("SELECT * FROM resit1617_events WHERE type = 
'$search'"); 

if($result->num_rows > 0){ 
    while($rows = $result->fetch_assoc()) 
    { 
     $event = $rows['name']; 
     $type = $rows['type']; 
     $description = $rows['description']; 
     $day = $rows['day']; 
     $month = $rows['month']; 
     $year = $rows['year']; 
     $recommendations = $rows['recommendations']; 
     $age = $rows['min_age']; 

     $output ="Event: $event, Type: $type, Date: $day/$month/$year, Minimum Age: $age, Recommendations: $recommendations, Description: 
$description<br />"; 
     } 
    }else{ 
     $output = "No Results"; 
    } 
} 
?> 

その後、私はPHPと私のHTMLコードは、出力値をエコーするために含まれているが、コードは誰もが知っている場合

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>The Welders Arms</title> 
    <link rel="stylesheet" type="text/css" href="css/main.css"> 
</head> 
<body> 
    <div id="topbar"> 
     <p><img src="img/logo.png" alt="logo"></p> 
    </div> 
    <div id="wrapper"> 
     <form method="POST" action="search.php"> 
      <label id="searchheading">Search Events in The Welders Arms</label> 
      <br> 
      <input type="text" placeholder="Search by type of event e.g. live band, comedy etc.." id="type" name="search"> 
      <input type="submit" id="searchbutton" value="Search"> 
      <br> 
     </form> 
<?php echo $output; ?> 
    </div> 
</body> 

</html> 

を動作しないようですなぜそれがうまくいかないのかという解決策は、私のプロジェクトで私がこれからも続けてくれるので私に知らせてください。

ありがとうございました!

PS。あなたはので、あなたが提出しようとしているポストをキャッチあなたはそれをisset($_POST['submit']を設定しているPHPスクリプトでこのname="submit"のように提出するという名前のattibuteを持っていないコードのすべてを一つのファイルにsearch.php

+0

あなたは 'submit'という名前の入力を持っていません。送信ボタンに 'name =" submit "がないので、' if(isset($ _ POST ['submit'])){'は決してtrueになりません。 – Qirel

+0

その巨大なセキュリティホールを抱えている – rtfm

+0

すでに** prepared statement **をサポートしているAPIを使用していますが、バウンド変数の入力では、プレースホルダ(プリペアドステートメント)でパラメータ化されたクエリを利用して、[SQLインジェクション](http://stackoverflow.com/q/60174/)! ['mysqli :: prepare()'](http://php.net/mysqli.prepare)から始めましょう。 – Qirel

答えて

1

簡単な解決策があれば、あなたの初期を変更することであろう検索フィールドが存在するかどうかをテストします。

またprepared statementsにするか、手動で非常に少なくともエスケープ文字列でMySQLのインジェクション攻撃から身を守る考慮する必要があります。

$search = $mysqli->real_escape_string($_POST['search']); 
0

と呼ばれている。..

if(isset($_POST['submit'])){ 

に:フォームワットかどうかをテスト

if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['search'])){ 

関連する問題