0

ここでの PHP の問題です。ログイン/ログアウトの種類のコードを作成しinsertましdeleteた。loginlogout

したがって、問題は、テキストを挿入した後、単に削除できないことです。削除ボタンは単純なターンバックボタンのようなものであり、彼の仕事をしていないため、何も機能していないようif(isset($_POST['delete']))です。

問題は、同じページを参照する 2 つの void アクションを使用している可能性がありますか? 最初のボタンは機能し、2 番目のボタンは機能しません。

誰でも理由を理解できますか?

<html>
  <header></header>
  <body>
    <!-- START PHP --> 
    <?php
      //If not submit i put the submit form
      if(!isset($_POST['send'])){
        echo "<form name='send' action='' method='POST'>
          <input type='text' name='text' value=''/>
          <input type='submit' name='send' value='send' />
          </form>";
      }<!-- IF END --> 

      //If submit was set I insert $text into the db and I render
      //the delete button
      else {
        $conn= mysql_connect('localhost','root','');
        mysql_select_db('db_try',$conn ) or die(mysql_error());
        $dato=$_POST['dato'];
        mysql_query(" INSERT INTO test (value) VALUES ('$text') ") or die(mysql_error());
        echo "Operation complete";

        //Now i render the delete submit button...
        echo "<form name='delete' action='' method='POST'>
          <input type='submit' name='delete' value='delete' />
          </form>";

        //...and if i push it NOTHING, like it's only
        //a return to the first form button
        if(isset($_POST['delete'])){
          mysql_query(" DELETE FROM test WHERE value='$text' ") or die(mysql_error());
          echo "<br>Text'".$text."' deleted";
        }
      }<!-- ELSE END--> 
    ?><!-- END PHP -->
  </body>
</html>

4

3 に答える 3

2

コードに論理的な問題があります。削除ボタンをクリックすると、スクリプトが再度実行されます。if(!isset($_POST['send']))送信ボタンが設定されていないため、最初の条件は合格になり、if ステートメントに入り、削除コードは実行されません。

あなたのスクリプトは、SQL インジェクションに対しても脆弱なようです。

于 2012-09-26T23:50:34.527 に答える
1

これを行う正しい方法は次のとおりです。これは簡単なヒントです。mysql 挿入セキュリティなどについてもう少し作業する必要があります。

<html>
<header>
<body>

<?php

    $conn= mysql_connect('localhost','root','');
    mysql_select_db('db_try',$conn ) or die(mysql_error());

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

        $text = $_REQUEST['text'];

        mysql_query(" INSERT INTO test (value) VALUES ('$text') ") or die(mysql_error());

        $answer = "Operation complete";

        $form = "<form name='delete' action='' method='POST'>
                <input type='submit' name='delete' value='delete' />
                </form>";

    }

    else if(isset($_POST['delete'])){

        mysql_query(" DELETE FROM test WHERE value='$text' ") or die(mysql_error());

        $answer = "Text'".$text."' deleted";

    }
    else {

        $form = "<form name='send' action='' method='POST'>
                <input type='text' name='text' value=''/>
                <input type='submit' name='send' value='send' />
                </form>";

    }

    print "<h1>" . $answer . "</h1>";
    print $form;

?>

</body>
</header>
</html>
于 2012-09-27T00:05:21.557 に答える
0

私はそれもうまくいくかもしれないと思います...

if (!isset($_POST['submit']) || isa($_POST['submit'] != 'login')) 
于 2012-10-13T06:54:56.377 に答える