0

*注意:使用未定义的常量 _ - 在 /.../uploader.php 第 45 行假设为“_”*

45号线

$newname = str_replace(array(' ', '&'), array('_', 'and'), trim( strip_tags( $_POST['name'] ) ) ) . _ . $formKey->generateKey() . '_' . time() . '.jpg';

注意:未定义的索引:在第 81 行的 /.../uploader.php 中批准

第 81 行 - 这里的倒数第二行

    $query = sprintf("INSERT INTO `$db_name`.`the_table` (`id` , `name` , `photo` , `email` , `date` , `code` , `subscribe` , `approve` , `created` )
        VALUES ( NULL , '%s', '%s', '%s', '%s', '%s', '%s', '1', CURRENT_TIMESTAMP );",
        mysql_real_escape_string($_POST['name']),
        mysql_real_escape_string($newname),
        mysql_real_escape_string($_POST['email']),
        mysql_real_escape_string($date),
        mysql_real_escape_string($_POST['code']),
        mysql_real_escape_string($subscribe),
        mysql_real_escape_string($_POST['approve'])
        );

警告:无法修改标头信息 - 标头已由(输出开始于 /.../uploader.php:45)在 /.../uploader.php 第 102 行发送

45号线

$newname = str_replace(array(' ', '&'), array('_', 'and'), trim( strip_tags( $_POST['name'] ) ) ) . _ . $formKey->generateKey() . '_' . time() . '.jpg';

第 102 行 - 这里的第三行

if ($success == 'Done') {
    $page = 'uploader';
    header('Location: ./thanks.php');
} else {
echo "error";
}
4

4 回答 4

1

第 45 行:. _ .应该是. '_' .

第 81 行:您的帖子数据没有“批准”检查提交帖子的表单。

第 102 行:在调用header(). 我相信之前生成的警告会导致同样的错误。

于 2012-11-02T04:57:13.183 回答
1

第一的 :

$newname = str_replace(array(' ', '&'), array('_', 'and'), trim( strip_tags( $_POST['name'] ) ) ) . _ . $formKey->generateKey() . '_' . time() . '.jpg';

在这你错过了_beatween的报价trim( strip_tags( $_POST['name'] ) ) ) . _ . $formKey->generateKey()

将此行替换为

$newname = str_replace(array(' ', '&'), array('_', 'and'), trim( strip_tags( $_POST['name'] ) ) ) . '_' . $formKey->generateKey() . '_' . time() . '.jpg';

第二:

你应该更换你所有的

mysql_real_escape_string($_POST['name']),
mysql_real_escape_string($_POST['email']),
mysql_real_escape_string($_POST['code']),
mysql_real_escape_string($_POST['approve'])

经过

    $name = (isset($_POST['name'])) ? mysql_real_escape_string($_POST['name']) : "";
    $email = (isset($_POST['email'])) ? mysql_real_escape_string($_POST['email']) : "";
    $code = (isset($_POST['code'])) ? mysql_real_escape_string($_POST['code']) : "";
    $approve = (isset($_POST['approve'])) ? mysql_real_escape_string($_POST['approve']) : "";
    $query = sprintf("INSERT INTO `$db_name`.`the_table` (`id` , `name` , `photo` , `email` , `date` , `code` , `subscribe` , `approve` , `created` )
    VALUES ( NULL , '%s', '%s', '%s', '%s', '%s', '%s', '1', CURRENT_TIMESTAMP );",
    $name,
    mysql_real_escape_string($newname),
    $email,
    mysql_real_escape_string($date),
    $code,
    mysql_real_escape_string($subscribe),
    $approve
    );

第三

您可以<?php ob_start(); ?>在页面顶部和页面<?php ob_flush(); ?>底部添加,也可以替换header('Location: ./thanks.php');

echo '<script>document.location.href="thanks.php";</script>';

于 2012-11-02T05:30:11.320 回答
0

正如 Istiaque Ahmed 所提到的,标头错误是因为在收到标头命令之前已经将错误输出到浏览器。一旦你处理了其他错误,标题错误就会消失。

于 2012-11-02T05:06:46.453 回答
0

就像你写字符串一样"%s". $_POST['name'] .例如:

 $query = sprintf("INSERT INTO `" . $db_name . "`.`the_table` (`id` , `name` , `photo` , `email` , `date` , `code` , `subscribe` , `approve` , `created` )
                   VALUES ( NULL , '" . $_POST['name'] . "', ...
                 );
于 2012-11-02T05:02:10.763 回答