PHP脚本中的特殊字符会停止执行

时间:2015-09-07 05:33:05

标签: php mysql codeigniter

我将.csv文件中的员工数据导入为批量操作。有许多字段,如名字,姓氏,电子邮件,联系人号码,地址等。

数据库中的电子邮件字段是索引/唯一。所以我对它进行了验证。

但我的问题是某些行包含特殊字符,如matinées@fauts.net或débutante@peured.info[focus é]。

这将在没有错误日志的情况下意外停止php脚本执行。我还经历了Apache错误日志/ PHP错误日志,但没有错误。请帮我防止这个。

我也尝试将字符编码方案设置为UTF-8或Westorn-ISO-800等,但这不起作用。

代码段:

`                   $firstname = $sd[0];
                    if ($firstname != '' || !empty($firstname)) {

                        $lastname = $sd[1];
                        $email = $sd[2];
                        if ($sd[3] != '' && $sd[3] != NULL) {                                
                            $password = md5( $sd[3]);
                        }
                        $contactno = $sd[4];
                        $internalextension = $sd[5];
                        $companyid = $this->session->userdata('companyid');

                        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                            return array("status" => FALSE, "message" => "Error while Importing Employee. Please Check Your .csv "
                                . "file; <br/> Your file contains Invalid Email Id at Line number" . ($count + 1) . ". Email: $email");
                        } else {

                            if ($count != 500) {

                                $query = $query . "(NULL, '" . $firstname . "', '" . $lastname . "', '" . $email . "', "
                                        . "'" . $password . "', '" . $salt . "', 1, '" . $contactno . "',"
                                        . "'" . $internalextension . "', 4, " . $companyid . ", '" . my_datenow() . "'),";
                            } else {

                                $query = $query . "(NULL, '" . $firstname . "', '" . $lastname . "', '" . $email . "', "
                                        . "'" . $password . "', '" . $salt . "', 1, '" . $contactno . "',"
                                        . "'" . $internalextension . "', 4, " . $companyid . ", '" . my_datenow() . "');";
                                echo $query;
                            }
                        }
                    } else {
                        return array("status" => FALSE, "message" => "Error while Importing Employee. Please Check Your .csv file; First Name should not be blank.");
                    }`

1 个答案:

答案 0 :(得分:0)

您可以在为变量赋值之前使用htmlspecialchars(),例如

$firstname = htmlspecialchars($sd[0]);

htmlspecialchars - 将特殊字符转换为HTML实体 参考:http://php.net/manual/en/function.htmlspecialchars.php