我快疯了。在一个非常简单的 PHP 文件中,没有安全考虑,因为它仅供信任的几个人在内部使用,我设置了两个 JS 警报。非常非常基础。我们有一个带有警报的 IF,然后是带有第二个警报的 ELSE。
第一个在必填字段为空时触发,第二个应该在一切正常时触发,只是为了让用户知道表单已发布。除了第二个警报永远不会触发。
让我粘贴代码:
<?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');
}
?>
我做了一些测试:
- 将第二个脚本移动到第一个脚本的下方:NOK
- 置换两个脚本:问题仍然相同,流程中的第一个脚本有效,第二个无效
您在这段代码中看到任何错误吗?没有任何优化,但这是一个开发版本,我想在改进代码之前获得功能,所以请放纵 ;)
谢谢你。