我遇到了问题,我正在尝试创建表单注册,但此页面只能由员工访问。
所以我有:<?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())");
}
}
我想我的代码中有些错误,但我的眼睛却没有错,而且我没有错误响应,所以我猜这是查询的内容。
谢谢
答案 0 :(得分:1)
您的SQL查询似乎不正确,列数不匹配,您尝试插入10列,但您只提供9个值,而您缺少ID&#39; ID&#39;您的查询中的值。
答案 1 :(得分:0)
“我无法插入......”不是一个有用的诊断。 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 injection上阅读,然后才能在互联网上公开。