我差不多完成了我的第一个PHP / HTML网站,在提交带有'connect.php'的HTML表单后,我已经堆叠在此重定向中。
我猜这个'header()'标签出了问题,因为sql帖子工作正常。
首先,形式:
<div id="formulario">
<form action="connect.php" method="post" enctype="multipart/form-data" onSubmit="alert('Thank you for your feedback.')">
<p id="form_title">COMPLETA TUS DATOS Y ENVIA ESTA SOLICITUD <br> A LAS AUTORIDADES</p>
<label></label>
<input class="field" name="user_name" type="text" required="required" placeholder="NOMBRE">
<label></label>
<input class="field" name="user_last" type="text" required="required" placeholder="APELLIDO">
<label></label>
<input class="field" name="pais" type="text" required="required" placeholder="PAIS">
<label></label>
<input class="field" name="user_email" type="email" required="required" placeholder="EMAIL">
<label></label>
<input class="field" name="tel" type="number" required="required" placeholder="TELEFONO">
<input id="submit" name="submit" type="submit" value="SUBMIT">
<div id="masinfo">
<a href="" target="_blank"><img src="" alt="" />CLICK AQUI PARA MAS INFO</a>
</div>
</form>
现在,'connect.php'文件:
define('DB_NAME', 'm9000207_ficlog');
define('DB_USER', 'm9000207_ficlog');
define('DB_PASSWORD','25dutotePE');
define('DB_HOST','localhost');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$link) {
die('Could not connect: ' .mysql_error());
}
$db_selected = mysql_select_db(DB_NAME, $link);
$value1 = $_POST ['user_name'];
$value2 = $_POST ['user_last'];
$value3 = $_POST ['pais'];
$value4 = $_POST ['tel'];
$value5 = $_POST ['user_email'];
$sql = "INSERT INTO registros VALUES ('', '$value1', '$value2', '$value3', '$value4', '$value5')";
if($value1 !=''&& $value2 !=''&& $value3 !=''&& $value4 !=''&& $value5 !=''){
header("Location: index.html");
}
if (!mysql_query($sql)) {
die('Error: ' . mysql_error());
}
if (!$db_selected) {
die ('Cant use' . DB_NAME . ': ' . mysql_error ());
}
mysql_close();
?>
答案 0 :(得分:0)
http://php.net/manual/en/function.header.php
请记住,在任何实际输出之前必须调用header() 通过普通HTML标记,文件中的空行或PHP发送。 使用include或require读取代码是一个非常常见的错误, 函数或其他文件访问函数,并且有空格或空 调用header()之前输出的行。一样的问题 使用单个PHP / HTML文件时存在。
输出开始后无法重定向。尝试将connect.php中的检查移动到输出表单之前。此外,最好在header()调用后立即退出()以防止在调用后输出。
答案 1 :(得分:0)
您的脚本可能有一些您无法看到的输出,即空格。通过在脚本顶部使用ob_start()
启动缓冲区来解决此问题,并在重定向之前使用ob_end_clean()将其丢弃..
<?php
ob_start(); // Begin a buffer
define('DB_NAME', 'm9000207_ficlog');
define('DB_USER', 'm9000207_ficlog');
define('DB_PASSWORD','25dutotePE');
define('DB_HOST','localhost');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$link) {
die('Could not connect: ' .mysql_error());
}
$db_selected = mysql_select_db(DB_NAME, $link);
$value1 = $_POST ['user_name'];
$value2 = $_POST ['user_last'];
$value3 = $_POST ['pais'];
$value4 = $_POST ['tel'];
$value5 = $_POST ['user_email'];
$sql = "INSERT INTO registros VALUES ('', '$value1', '$value2', '$value3', '$value4', '$value5')";
if($value1 !=''&& $value2 !=''&& $value3 !=''&& $value4 !=''&& $value5 !=''){
ob_end_clean(); // Discard any output
header("Location: index.html");
exit; // Good practice
}
if (!mysql_query($sql)) {
die('Error: ' . mysql_error());
}
if (!$db_selected) {
die ('Cant use' . DB_NAME . ': ' . mysql_error ());
}
mysql_close();
?>
答案 2 :(得分:0)
此外:
if($value1 != '')
错了
正确的方法是:if($value1 !== '')
或if(empty($value1))
但我推荐使用数组
答案 3 :(得分:0)
最后,我检查了de PHP元素之前的输出(前端数据),以及最后一个标题()下面的删除项目。
谢谢你们所有人!这是最终的代码,工作:
<?php
define('DB_NAME', 'm9000207_ficlog');
define('DB_USER', 'm9000207_ficlog');
define('DB_PASSWORD','25dutotePE');
define('DB_HOST','localhost');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$link) {
die('Could not connect: ' .mysql_error());
}
$db_selected = mysql_select_db(DB_NAME, $link);
$value1 = $_POST ['user_name'];
$value2 = $_POST ['user_last'];
$value3 = $_POST ['pais'];
$value4 = $_POST ['tel'];
$value5 = $_POST ['user_email'];
$sql = "INSERT INTO registros VALUES ('', '$value1', '$value2', '$value3', '$value4', '$value5')";
mysql_close();
if($value1 !=''&& $value2 !=''&& $value3 !=''&& $value4 !=''&& $value5 !=''){
header("Location: index.html");
exit();
}
?>
<h2>Gracias!, hemos recibido su firma. Ahora, será redirigido.</h2>
&#13;