我遇到了问题,我正在尝试创建表单注册,但此页面只能由工作人员访问。所以我有:<?php if($_SESSION['id'])
来验证用户是否已登录并向该用户显示回声。
我在插入生日注册时遇到问题,因为我使用 PHP 计算年、月和日。这是代码的一部分
if($_POST['submit']=='Rregjistro')
{
// If the Register form has been submitted
$err = array();
if(strlen($_POST['emri'])<4 || strlen($_POST['emri'])>32)
{
$err[]='Emri duhet te permbaje nga 3 deri 32 karaktere!';
}
if(preg_match('/[^a-z0-9-_.]+/i',$_POST['emri']))
{
$err[]='Emri juaj permban karakter te palejueshme!';
}
if(strlen($_POST['atesia'])<4 || strlen($_POST['atesia'])>32)
{
$err[]='Atesia duhet te permbaje nga 3 deri 32 karaktere!';
}
if(preg_match('/[^a-z0-9-_.]+/i',$_POST['atesia']))
{
$err[]='Atesia juaj permban karakter te palejueshme!';
}
if(strlen($_POST['mbiemri'])<4 || strlen($_POST['mbiemri'])>32)
{
$err[]='Mbiemri duhet te permbaje nga 3 deri 32 karaktere!';
}
if(preg_match('/[^a-z0-9-_.]+/i',$_POST['mbiemri']))
{
$err[]='Mbiemri juaj permban karakter te palejueshme!';
}
if(strlen($_POST['vendlindja'])<4 || strlen($_POST['vendlindja'])>32)
{
$err[]='Vendlindja duhet te permbaje nga 3 deri 32 karaktere!';
}
if(preg_match('/[^a-z0-9-_.]+/i',$_POST['vendlindja']))
{
$err[]='Vendlindja juaj permban karakter te palejueshme!';
}
if(strlen($_POST['vendbanimi'])<4 || strlen($_POST['vendbanimi'])>32)
{
$err[]='Vendbanimi duhet te permbaje nga 3 deri 32 karaktere!';
}
if(preg_match('/[^a-z0-9-_.]+/i',$_POST['vendbanimi']))
{
$err[]='Vendbanimi juaj permban karakter te palejueshme!';
}
if(strlen($_POST['telefon'])<4 || strlen($_POST['telefon'])>10)
{
$err[]='Telefoni duhet te permbaje nga 5 deri 10 numra!';
}
if(preg_match('/[^a-z0-9-_.]+/i',$_POST['telefon']))
{
$err[]='Telefoni juaj permban karakter te palejueshme!';
}
if(!count($err))
{
$_POST['emri'] = mysql_real_escape_string($_POST['emri']);
$_POST['atesia'] = mysql_real_escape_string($_POST['atesia']);
$_POST['mbiemri'] = mysql_real_escape_string($_POST['mbiemri']);
$_POST['vendlindja'] = mysql_real_escape_string($_POST['vendlindja']);
$_POST['vendbanimi'] = mysql_real_escape_string($_POST['vendbanimi']);
$_POST['telefon'] = mysql_real_escape_string($_POST['telefon']);
$_POST['zona'] = mysql_real_escape_string($_POST['zona']);
// Escape the input data
mysql_query("INSERT INTO antaret(ID,emri,atesia,mbiemri,ditelindja,vendlindja,vendbanimi,telefon,zona,regtime)
VALUES('".$_POST['emri']."','".$_POST['atesia']."','".$_POST['mbiemri']."','".$date."','".$_POST['vendlindja']."','".$_POST['vendbanimi']."','".$_POST['telefon']."','".$_POST['zona']."',NOW())");
}
}
我想我在代码中有错误,但我的眼睛丢失了,而且我没有错误响应,所以我想是查询的问题。
谢谢
您的SQL查询似乎不正确,列计数不匹配,您正在尝试插入到10列中,但仅提供9个值,查询中缺少"ID"值。
我在插入时遇到问题..."不是有用的诊断。mysql 扩展(及其替代品(提供了一个 API 来捕获失败的原因:
$qry=("INSERT INTO antaret
(ID, emri,
atesia, mbiemri,
ditelindja, vendlindja,
vendbanimi, telefon,
zona, regtime)
VALUES
('".$_POST['emri']."','".$_POST['atesia']."','"
.$_POST['mbiemri']."','".$date."','"
.$_POST['vendlindja']."','".$_POST['vendbanimi']."','"
.$_POST['telefon']."','".$_POST['zona']."',
NOW()
)");
$result = mysql_query($qry);
if (false===$result) {
print "Query failed: " . mysql_error() . "<br /><br />" . $qry;
}
这可能为您提供了一个线索,即语句中声明的列数和值数存在差异。格式化您的 SQL 以使其可读可能会为您提供线索。
顺便说一句,在互联网上公开之前,您应该阅读SQL注入。