Kan inte skicka vidare besökare med header
Hej
Har ett problem med att skickar vidare personer med header på min hemsida. Använder php som ni säkert företog. Problemet är att jag skriver ut saker på skärmen innan jag använder headern och då får jag ett fel meddelande, borde gå att lösa med ob_strat och ob_end men vet inte vart jag sak sätta ut de ör att de sak fungera.
Felmeddelandet
Warning: Cannot modify header information - headers already sent by (output started at /register_page.php:2) in register.php on line 4
register_page.php
<!doctype html>
<?php
require('includes/html_include.php');
require('includes/register.php');
$error_message = array();
if(isset($_POST['submit'])){ //Blir sant om submitknappen i formuläret är nertryckt
$error_message = register($error_message); //Anropar metoden som registrerearar användaren i "register.php", eventuella felmedelenden retuneras och sparas i variabeln "$error_message"
}
?>
//HTML kod för formulär
register.php
<?php
require ('connects.php');
require ('conf.php');
require ('security.php');
function register($error_message){
if(isset($_POST['user'])&&isset($_POST['mail'])&&isset($_POST['password'])&&isset($_POST['rep_password'])){
if(!empty($_POST['user'])&&!empty($_POST['mail'])&&!empty($_POST['password'])&&!empty($_POST['rep_password'])){
$user = trim($_POST['user']);
$mail = trim($_POST['mail']);
$crypt_password_value = crypt_text($_POST['password']);
$crypt_rep_password_value = crypt_text_spec_salt($_POST['rep_password'],$crypt_password_value['salt']);
$password = $crypt_password_value['pass'];
$rep_password = $crypt_rep_password_value['pass'];
$pattern_email = '/^(.+)@(.+).([a-z]{2,3})$/';
if(strlen($user)<=30&&strlen($mail)<=50){
if(preg_match($pattern_email,$mail)){
if($rep_password === $password){
$check_exist = mysql_query("SELECT `id` FROM `users` WHERE `username` = '$user'");
if(mysql_num_rows($check_exist) == null){
$insert = "INSERT INTO `brommund_se`.`users` (`username`, `password`, `mail`) VALUES ('$user','$password','$mail')";
if(mysql_query($insert)){
$activate_code='';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrst1234567890';
$activate_code = substr(str_shuffle($chars),0,10);
$insert_activate_code = "UPDATE `users` SET `activate`='$activate_code' WHERE `username` = '$user'";
if(mysql_query($insert_activate_code)){
$recipient = $mail;
$subject = 'Aktivera kont';
$header = 'From: brommund.se';
$mail_body = 'Aktiveringskod '.$activate_code;
mail($recipient, $subject, $mail_body, $header);
header('Location: '.$host.'/activate_user.php'); //Felet uppstår här
ob_end_flush();
die();
}else{
$error_message[] = 'Kunde inte registrera! Försök igen.';
}
}else{
$error_message[] = 'Kunde inte registrera! Försök igen.';
}
}else{
echo $error_message[] = 'Användarnamnet är upptaget';
}
}else{
$error_message[] = 'Lösenorden matchar inte!';
}
}else{
$error_message[] = 'Skriv in en giltig e-postadress!';
}
}else{
if(strlen($user)>30){
$error_message[] = 'Användarnamnet är för långt (max 30 tecken)!';
}
if(strlen($mail)>50){
$error_message[] = 'Mailen är för långt (max 50 tecken)!';
}
}
}else{
$error_message[] = 'Fyll i alla fält!';
}
}
return $error_message;
}