

textareaに書いた内容ではなく、１がinsertされます。  
原因がわからないので、教えていただければ幸いです。  
よろしくお願いします。

* * *

index.php

[code]

    <div id="content">
        <div style="text-align: right"><a href="logout.php">ログアウト</a></div>
        <form action="javascript:void(0)" method="post" id="form">
            <textarea name="message" id="message" cols="70" rows="15" placeholder="メモを残してください"></textarea><br>
            <input type="submit" value="書き込む" id="write">
        </form>
    </div>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
      <!-- jQueryライブラリの読み込み-->
      <script type="text/javascript">
    //メッセージ用
        $(function(){
                //button click
                $('#write').on('click',function(){
                    $.ajax({
                        url:'index_do.php',
                        type:'POST',
                        data:{
                            'message':$('#message').val()
                        }
                    })
                    // Ajaxリクエストが成功した時発動
                    .done( (data) => {
                        $('.result').html(data);
                        console.log(data);
                    })
                    // Ajaxリクエストが失敗した時発動
                    .fail( (data) => {
                        $('.result').html(data);
                        console.log(data);
                    })
                    // Ajaxリクエストが成功・失敗どちらでも発動
                    .always( (data) => {
    
                    });
                });
            });
      </script>
    
[/code]

index_do.php

[code]

    <?php
        header('Content-type: text/plain; charset= UTF-8');
        $message = h(isset($_POST["message"]));
        echo $message;//for confirm
        $db->query("INSERT INTO tb(mes) VALUES('$message')");
        $db->query("UPDATE `tb`");
        echo $message;
    ?>
    
[/code]


CC BY-SA 4.0
2019-08-18T08:42:03.873
57429
2019-08-19T11:55:01.870
2019-08-19T00:07:11.513
3060
35497
question
php ajax
ajaxを使った簡易掲示板、insertがうまくいかない


> isset($_POST["message"])

は、TRUE（存在）か FALSE（存在しない）を返すので h()のなかで論理型が文字か数字に変換されて ”１”が表示されているのでは。

**isset** を使い $_POST["message"] が存在しているか、判断しているなら。

[code]

    if(isset($_POST["message"])){
    $message = h($_POST["message"]);
    }else{
    // $_POST["message"]が存在しない時の処理
    }
    
[/code]

とするのが良いと思います。  
追伸、 XSS(クロスサイトスクリプティング)やSQLインジェクション に注意しましょう！


CC BY-SA 4.0
2019-08-19T02:50:22.780
57435
2019-08-19T02:55:23.380
2019-08-19T02:55:23.380
22793
22793
57429
answer