PHP内部的PHP与$ _session回声

时间:2017-04-04 10:00:01

标签: php mysql insert

我遇到了问题,我正在尝试创建表单注册,但此页面只能由员工访问。 所以我有:<?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())");


}
                } 

我想我的代码中有些错误,但我的眼睛却没有错,而且我没有错误响应,所以我猜这是查询的内容。

谢谢

2 个答案:

答案 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上阅读,然后才能在互联网上公开。