【发布时间】:2020-05-19 20:02:20
【问题描述】:
这是我提交数据的表单
<p align="center" style="color:#F00;">
<?php echo $msg; ?>
</p>
<form class="form-horizontal style-form" name="form1" method="post" action="Create-jobs.php" onSubmit="return validate();">
<p style="color:#F00"></p>
<div class="form-group">
<label class="col-sm-2 col-sm-2 control-label" style="padding-left:40px;">Job Title</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="job_title" placeholder="<Enter Job name>">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 col-sm-2 control-label" style="padding-left:40px;">Job Description</label>
<div class="col-sm-10">
<textarea class="form-control" name="job_des" placeholder="<Enter a detailed description>" cols="17" rows="10"></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 col-sm-2 control-label" style="padding-left:40px;">Job Requirements</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="job_reqs" placeholder="<Enter requirements seperated by a comma>">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 col-sm-2 control-label" style="padding-left:40px;">Is the job active?(y/n)</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="job_reqs" placeholder="y/n">
</div>
</div>
<div style="margin-left:15px; margin-bottom:15px;">
<input type="submit" name="submit" value="Create Job" class="btn btn-theme"></div>
</form>
这是我用来提交表单数据的 php 代码。
define('DB_SERVER','localhost');
define('DB_USER','root');
define('DB_PASS' ,'');
define('DB_NAME', 'loginsystem');
$con = mysqli_connect(DB_SERVER,DB_USER,DB_PASS,DB_NAME);
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if(isset($_POST['submit']))
{
$jobtitle = $_POST['job_title'];
$jobdes = $_POST['job_des'];
$jobreqs = $_POST['job_reqs'];
$jobactive = "";
if(job_active == "y") {
$jobactive = '1';
} else {
if(job_active == "n") {
$jobactive = '0';
} else {
$msg = "error in job_active.";
}
}
$sql = "INSERT INTO jobs (jobID, job_title, job_des, job_reqs, job_active, Posting_date) VALUES (NULL, '$jobtitle', '$jobdes', '$jobreqs', '$jobactive', current_timestamp()')";
mysqli_query($con,$sql);
$msg = "it worked successfully!";
} else {
$msg = "error submitting form.";
}
我正确输入了数据并且代码执行通过了我的所有检查。($msg =“它成功工作正在被触发。)但是数据库本身没有更新。我检查了数据库本身是否有问题但是我的其他页面读取数据库数据正常。谁能告诉我我的代码有什么问题?
【问题讨论】:
-
你没有检查
mysqli_query()的结果,为什么你认为它成功了? -
你应该学会使用prepared statements来防止SQL注入。
-
您的脚本对SQL Injection Attack 开放。即使是if you are escaping inputs, its not safe!,您也应该考虑在
MYSQLI_或PDOAPI 中使用prepared parameterized statements,而不是连接值 -
你在
current_timestamp()之后多了一个'