是否有一种方法可以确定我的数据字符串是否正在传递给我的php函数

是否有一种方法可以确定我的数据字符串是否正在传递给我的php函数,php,forms,jquery,Php,Forms,Jquery,我调用ajax表单提交脚本,如下所示: $(function() { $('.simple-success').hide(); $("#submit_button").click(function() { var firstname=$("input#Firstname").val(); var lastname=$("input#Lastname").val(); var email = $("input#email").val();

我调用ajax表单提交脚本,如下所示:

$(function() {
  $('.simple-success').hide();
  $("#submit_button").click(function() {


        var firstname=$("input#Firstname").val();
        var lastname=$("input#Lastname").val();
        var email = $("input#email").val();
        var title = $("input#title").val();
        var organization = $("input#organization").val();




var dataString = 'firstname='+ firstname + '&lastname=' + lastname + '&email=' + email + '&title=' + title + '&organization=' + organization;  


            $.ajax({
      type: "POST",
      url: "optIn.php",
      data: dataString,
      success: function() {
          $('.emailform').fadeOut(100).hide();
        $('.simple-success').fadeIn(100).show();
         alert('sucess')

      }
     });
    return false;
    });
});
脚本从表单中提取数据,因为我可以在datastring的警报中查看数据。但是由于一些奇怪的原因,即使PHP脚本看起来正确,数据也从未发送到数据库。下面给出了PHP脚本

<?php


    $firstname = stripslashes(strip_tags($_POST['firstname']));

    $lastname = stripslashes(strip_tags($_POST['lastname']));
    $email = stripslashes(strip_tags($_POST['email']));
    $title = stripslashes(strip_tags($_POST['title']));
    $organization = stripslashes(strip_tags($_POST['organization']));


$pdbHost = "localhost";
$pdbUserName = "******";
$pdbPassword = "******";
$pdbName     = "db1080824_emails";



//  Connect to mySQL
$conlink = mysql_connect($pdbHost, $pdbUserName, $pdbPassword);
if(!$conlink) {die('Unable to connect to '.$pdbHost);}
if (!mysql_select_db($pdbName, $conlink)){die('Cannot find database '.$pdbName);}

//SQL query

    $SQL2="INSERT INTO  `db1080824_emails`.`emails` (`record_id` ,`firstname`,`lastname`,`email`,`title`,`organization`)VALUES (NULL ,  '".$firstname."',  '".$lastname."',  '".$email."',  '".$title."',  '".$organization."')";

    mysql_query($SQL2);
//  Connect to Closing the connection
mysql_close($conlink);
?>

您可以在php中回显所需的所有内容,并向其发出如下警告:

success: function(html) {
      $('.emailform').fadeOut(100).hide();
    $('.simple-success').fadeIn(100).show();
     alert(html)

  }
它还将显示php文件中发生的错误。

第一个选项:使用xdebug。这是最好的选择,因为它将为您提供全面的调试支持,并可以帮助您修复各种PHP/MySQL问题。然而,正确设置可能会很痛苦,根据您的环境,这可能不是一个选项

第二个选项:查看PHP错误日志。此日志的位置取决于服务器设置。如果您使用的是主机服务,则应通过主机的控制面板提供此服务。如果您的服务器是带Apache的Linux,则日志通常位于Apache日志文件(/var/log/apache2/error.log或类似文件)或vhost日志文件(与文档根目录位于同一位置的日志文件夹)中。只需检查日志,就可以快速诊断和修复许多PHP错误

第三个选项:打印错误字符串。试试这个:

if( !mysql_query( $SQL2 ) ) {
    die( 'Error ' . mysql_errno( ) . ': ' . mysql_error( ) );
}
然后在Firebug或类似工具中检查响应


无论你做什么,都要确保对这些输入进行消毒。永远不要假设来自web客户机的任何数据都是安全的,因为将任意数据发布到表单是很简单的。试试这个:

您有一个SQL注入漏洞。我已经在表单本身中进行了验证,所以这已经得到了处理,php文件中的这个附加验证甚至不需要了。。任何人都可以使用curl或hackbar插件轻松攻击您的服务器。客户端验证很有趣,但在任何方面都不有效。不一定是坦率的。如果服务器端验证检查“/^[A-Za-z0-9]/”,则验证保证不会发生SQL注入。一般来说,我同意。MFrank2012-非常简单,
$\u POST
的内容可以包含任何内容。您还可以像这样检查您的sql错误:mysql_query($SQL2)或die(mysql_error());