2013-04-20 2 views
-1

등록 후 사용자에게 확인 이메일을 보내는 사용자 등록 양식을 만들려고합니다. 사이트를 로컬에서 호스트하면 모든 것이 잘됩니다. - 그래, 내 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"; 
    } 
    } 
} 
} 
?> 
+0

그 UR 달성하려는 것을 명확하지 않다. CSS로 양식에 일치시키는 HTML? 어디에? 등록 양식에? index.php 또는 register.php? –

+0

비즈니스 논리와 프레젠테이션을 분리하십시오. 그것들을 함께 쇄도하는 것은 유지 보수와 확장에있어서 끔찍한 일이다. 비즈니스 논리를 먼저 * 다음 * 프레 젠 테이션. MVC를 살펴보십시오. – deceze

답변

0

으로 session_start는 출력 이전이어야합니다.

<?php 
session_start();?> 
    <!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Untitled Document</title> 
</head> 

<body> 
<?php 
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> 
0

당신은 HTML 선언 위에 PHP 코드를 선언 할 수

<?php session_start(); ?> 
<!doctype html> 
<html><head> 
... your headers && some php codes 
</head> 
<body> 
... your body && some php codes 
</body> 
</html> 
관련 문제