0

私は夢中になっています。非常に単純な PHP ファイルで、信頼できる 2 人のユーザーのみが内部で使用するため、セキュリティを考慮せずに、2 つの JS アラートを設定しました。非常に基本的です。アラートを伴う IF と、2 番目のアラートを伴う ELSE があります。

1 つ目は必須フィールドが空の場合にトリガーされ、2 つ目はフォームが投稿されたことをユーザーに知らせるためだけに、すべてが OK の場合にトリガーされます。この 2 番目のアラートがトリガーされないことを除いて。

コードを貼り付けてみましょう:

<?php
// Connexion à la base de données
try
{
    $bdd = new PDO('mysql:host=***;dbname=***', '***', '***');
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}


// Concaténation des données des checkboxes iRules avant exécution
if (isset($irules)){
    $irules = implode( ", ", $_POST['irules'] ); 
}
else
{
    $irules = "default";
}

// Si des champs importants sont vides, l'utilisateur reçoit une alerte et les données ne sont pas envoyées
if (empty($_POST['url']) || empty($_POST['nom_vip']) || empty($_POST['ip_vip']))
{
    ?>

    <script>
        Javascript:alert('Merci de remplir tous les champs !')
        document.location.replace("index.php");
    </script>

    <?php
}
else
{
    // Insertion des données à l'aide d'une requête préparée
    $req = $bdd->prepare('INSERT INTO creation_vs (Protocol, Url, Alias_DNS, Virtual_Server_Name, Virtual_Server_IP_Port, OneConnect_Profile, HTTP_Profile, SSL_Client_Profile, Certificat_Name, SNAT_Pool, Default_Persistence_Profile, Pool_Name, Health_Monitor, Members_Ip_Port, Load_Balancing_Method, iRules, Comments) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');

    $req->execute(array($_POST['protocole'], $_POST['url'], $_POST['nom_vip'], $_POST['nom_vs'], $_POST['ip_vip'], $_POST['profil_oneconnect'], $_POST['profil_http'], $_POST['profil_ssl_client'], $_POST['nom_certificat'], $_POST['pool_snat'], $_POST['persistance'], $_POST['nom_pool_vs'], $_POST['health_monitor'], $_POST['members_ip_port'], $_POST['methode_LB'], $irules, $_POST['commentaires']));

    ?>
        <script>
            Javascript:alert('Instance ajoutee ! Merci.');
        </script>
    <?php

    header('Location: index.php'); 
}
?>

私はいくつかのテストを行いました:

  • 2 番目のスクリプトを最初のスクリプトのすぐ下に移動: NOK
  • 両方のスクリプトの並べ替え: 問題は同じです。フローの最初のスクリプトは機能しますが、2 番目のスクリプトは機能しません。

このコードにエラーはありますか? 何も最適化されていませんが、これはコードを改善する前に機能するようにしたい開発バージョンなので、甘やかしてください ;)

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

4

1 に答える 1

0

リクエスト通り、

リダイレクトに 2 つの方法を使用する理由 最初のものは機能しますが、再利用してみませんか? 最初に、javascriptはアラートを表示したに index.php にリダイレクトします。2番目に、phpは出力が表示されないようにヘッダーを書き直そうとします.index.phpファイルはアラートなしで出力されます

于 2013-07-10T13:09:21.410 に答える