등록 후 사용자에게 확인 이메일을 보내는 사용자 등록 양식을 만들려고합니다. 사이트를 로컬에서 호스트하면 모든 것이 잘됩니다. - 그래, 내 PHP는 위의 영역에서 모든 텍스트를 제거했습니다PHP가있는 페이지 스타일 지정하기
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
내가 알고있는 부분은 이전에 여러 번 대답하고있다 : 그러나, 나는 웹 (Hostgator에)에 호스팅 할 때, 나는 다음과 같은 오류가 발생합니다 코드 및 오류가 사라집니다.
그러나이 태그를 사용할 수 없다면 내 사이트에서이 코드를 어떻게 사용할 수 있습니까? 나는 CSS 스타일 시트를 사용하고 싶지만 지금은 아무것도 사용하지 못하거나 그 오류를 보지 않고도 내 doctype을 선언 할 수있다.
양식화 된 HTML 파일을 만든 다음 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";
}
}
}
}
?>
그 UR 달성하려는 것을 명확하지 않다. CSS로 양식에 일치시키는 HTML? 어디에? 등록 양식에? index.php 또는 register.php? –
비즈니스 논리와 프레젠테이션을 분리하십시오. 그것들을 함께 쇄도하는 것은 유지 보수와 확장에있어서 끔찍한 일이다. 비즈니스 논리를 먼저 * 다음 * 프레 젠 테이션. MVC를 살펴보십시오. – deceze