Я пытаюсь создать регистрационную форму пользователя, которая отправляет письмо с подтверждением пользователю после регистрации, а когда я размещаю сайт локально, все работает нормально. Однако, когда я разместить его в Интернете (Hostgator), я получаю следующее сообщение об ошибке:Стилизация страниц с PHP
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
Я знаю, что часть была дан ответ много раз - и да, я удалил весь текст из области выше моего PHP кода, и ошибка исчезнет.
Однако, если я не могу положить что-либо выше этого, то как я могу использовать этот код на своем сайте и все еще стилизовать страницу? Я хочу использовать таблицу стилей CSS, но сейчас я не могу ничего использовать или даже объявлять свой doctype, не видя этой ошибки.
Я пробовал создавать стилизованный html-файл, а затем использовать функцию включения php для включения моего PHP-кода, но это не работает.
Что я могу сделать, чтобы стилизовать мои страницы и использовать этот PHP-код на одной странице без ошибок? Кроме того, почему код работает правильно на моем локальном сервере, но не тогда, когда я загружаю его в hostgator?
Ниже приведен код php, который используется для моей страницы, что вызывает ошибки. Есть идеи?
index.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<?php
session_start();
if(isset($_SESSION['error']))
{
echo '<p>'.$_SESSION['error']['username'].'</p>';
echo '<p>'.$_SESSION['error']['email'].'</p>';
echo '<p>'.$_SESSION['error']['password'].'</p>';
echo '<p>'.$_SESSION['error']['gender'].'</p>';
unset($_SESSION['error']);
}
?>
<div class="signup_form">
<form action="register.php" method="post" >
<p>
<label for="username">User Name:</label>
<input name="username" type="text" id="username" size="30"/>
</p>
<p>
<label for="email">E-mail:</label>
<input name="email" type="text" id="email" size="30"/>
</p>
<p>
<label for="password">Password:</label>
<input name="password" type="password" id="password" size="30 "/>
</p>
<p>
<label for="gender">Gender: </label>
<select name="gender" id="gender">
<option value="NULL" selected>Select...</option>
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>
</p>
<p>
<label for="postalcode">Postal Code:</label>
<input name="postalcode" type="text" id="postalcode" size="15"/>
</p>
<p>
<input name="submit" type="submit" value="Submit"/>
</p>
</form>
</div>
</body>
</html>
register.php
<?php
session_start();
include('configdb.php');
if(isset($_POST['submit']))
{
//whether the username is blank
if($_POST['username'] == '')
{
$_SESSION['error']['username'] = "User Name is required.";
}
//whether the email is blank
if($_POST['email'] == '')
{
$_SESSION['error']['email'] = "E-mail is required.";
}
else
{
//whether the email format is correct
if(preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/", $_POST['email']))
{
//if it has the correct format whether the email has already exist
$email= $_POST['email'];
$sql1 = "SELECT * FROM user WHERE email = '$email'";
$result1 = mysqli_query($mysqli,$sql1) or die(mysqli_error());
if (mysqli_num_rows($result1) > 0)
{
$_SESSION['error']['email'] = "This Email is already used.";
}
}
else
{
//this error will set if the email format is not correct
$_SESSION['error']['email'] = "Your email is not valid.";
}
}
//whether the password is blank
if($_POST['password'] == '')
{
$_SESSION['error']['password'] = "Password is required.";
}
//if the error exist, we will go to registration form
if(isset($_SESSION['error']))
{
header("Location: index.php");
exit;
}
else
{
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$gender = $_POST['gender'];
$postalcode = $_POST['postalcode'];
$com_code = md5(uniqid(rand()));
$sql2 = "INSERT INTO user (username, email, password, com_code, gender, postalcode) VALUES ('$username', '$email', '$password', '$com_code', '$gender', '$postalcode')";
$result2 = mysqli_query($mysqli,$sql2) or die(mysqli_error());
if($result2)
{
$to = $email;
$subject = "Confirmation from TutsforWeb to $username";
$header = "TutsforWeb: Confirmation from TutsforWeb";
$message = "Please click the link below to verify and activate your account: ";
$message .= "http://www.emotionpool.com/SWIFT/confirm.php?passkey=$com_code";
$sentmail = mail($to,$subject,$message,$header);
if($sentmail)
{
echo "Your Confirmation link Has Been Sent To Your Email Address.";
}
else
{
echo "Cannot send Confirmation link to your e-mail address";
}
}
}
}
?>
Его не ясно, что ур пытается достичь. Стилизованный html как в css? Где? В регистрационной форме? В index.php или register.php? –
Отделите свою бизнес-логику от презентации. Сжатие их вместе ужасно для обслуживания и расширяемости для начала. Сначала бизнес-логика, * затем * презентация. Посмотрите на MVC. – deceze