• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z session_start()

Object Storage Arubacloud
0 głosów
215 wizyt
pytanie zadane 8 lutego 2017 w PHP przez ThePatrykOOO Dyskutant (8,400 p.)
Witam, mam problem chodzi o to że wyskoczyły mi dwa błędy po jakimś czasie od napisania strony:

Warning: session_start(): Cannot send session cookie

Warning: session_start(): Cannot send session cache limiter

Kod który wywołuje błąd:

<?php
    session_start();
?>

Nie wiem za bardzo jak ten problem rozwiązać, z góry dziękuje za pomoc.
komentarz 8 lutego 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
To cały błąd? Bo na moje oko to brakuje dopisku "headers already sent".
komentarz 9 lutego 2017 przez ThePatrykOOO Dyskutant (8,400 p.)
No nie cały

Warning: session_start(): Cannot send session cookie - headers already sent by

Warning: session_start(): Cannot send session cache limiter - headers already sent
komentarz 9 lutego 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)

Tak więc to bardzo popularny błąd, niżej już @ck wyjaśnił.

Coś musi być wysyłane do przeglądarki przed session_start(). Może jakaś spacja, może wcześniej kod HTML, nie wiem, sprawdź dokładnie. Inny sposób to użycie ob_start() i ob_end_flush(). To w zasadzie bardziej obejście dookoła tego problemu - przykład. Lepiej poszukaj co jest wysyłane do przeglądarki przed wykonaniem session_start().

1 odpowiedź

0 głosów
odpowiedź 8 lutego 2017 przez ck Obywatel (1,780 p.)
Sprawdź czy nie wysyłasz żadnych połączeń przed session_start();, najlepiej jakby session_start było pierwszą linijką twojego kodu nawet przed HTML.
komentarz 9 lutego 2017 przez ThePatrykOOO Dyskutant (8,400 p.)

Tak wygląda index

<?php
	session_start();
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>6 szczytów - bieg górski w Masywie Śnieznika</title>
	
    <!-- css -->
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
	<link href="css/nivo-lightbox.css" rel="stylesheet" />
	<link href="css/nivo-lightbox-theme/default/default.css" rel="stylesheet" type="text/css" />
	<link href="css/animations.css" rel="stylesheet" />
    <link href="css/style.css" rel="stylesheet">
	<link href="color/default.css" rel="stylesheet">
    <!-- =======================================================
        
    ======================================================= -->

</head>

<body id="page-top" data-spy="scroll" data-target=".navbar-custom">
	

					<form action="check-form.php" method="post" id="form-data">
			  <div><br>
			  	<label>Imie:<br>
		<input type="text" name="name" value="<?php if (isset($_SESSION['fr_name'])) {
			echo $_SESSION['fr_name'];
			unset($_SESSION['fr_name']);
		};
		?>"></label><br>
		<div class="error-form">
			<?php
				if(isset($_SESSION['e-name'])) echo $_SESSION['e-name']; unset($_SESSION['e-name']);
			?>
		</div><br>

		<label>Nazwisko:<br>
		<input type="text" name="surname" value="<?php if (isset($_SESSION['fr_surname'])) {
			echo $_SESSION['fr_surname'];
			unset($_SESSION['fr_surname']);
		};
		?>"></label><br>
		<div class="error-form">
			<?php
				if(isset($_SESSION['e-surname'])) echo $_SESSION['e-surname']; unset($_SESSION['e-surname']);
			?>
		</div><br>

		<label>Miasto/miejscowość:<br>
		<input type="text" name="city" value="<?php if (isset($_SESSION['fr_city'])) {
			echo $_SESSION['fr_city'];
			unset($_SESSION['fr_city']);
		};
		?>"></label><br>
		<div class="error-form">
			<?php
				if(isset($_SESSION['e-city'])) echo $_SESSION['e-city']; unset($_SESSION['e-city']);
				if(isset($_SESSION['e-city1'])) echo $_SESSION['e-city1']; unset($_SESSION['e-city1']);
			?>
		</div><br>

		<label>Data urodzenia (RRRR-MM-DD):<br>
		<input type="date" name="birth" min="1920-01-01" max="2015-01-01" value="<?php if (isset($_SESSION['fr_birth'])) {
			echo $_SESSION['fr_birth'];
			unset($_SESSION['fr_birth']);
		};
		?>"></label><br>

		<label>Płeć:<br>
		<input type="radio" name="sex" value="Mężczyzna">Mężczyzna
		<input type="radio" name="sex" value="Kobieta">Kobieta</label><br><br>
		<div class="error-form">
			<?php
				if(isset($_SESSION['e-sex'])) echo $_SESSION['e-sex']; unset($_SESSION['e-sex']);
			?>
		</div><br>
		<label>Telefon:<br>
		<input type="tel" name="tel" value="<?php if (isset($_SESSION['fr_tel'])) {
			echo $_SESSION['fr_tel'];
			unset($_SESSION['fr_tel']);
		};
		?>"></label><br>
		<div class="error-form">
			<?php
				if(isset($_SESSION['e-tel'])) echo $_SESSION['e-tel']; unset($_SESSION['e-tel']);
			?>
		</div><br>

		<label>E-mail:<br>
		<input type="mail" name="mail" value="<?php if (isset($_SESSION['fr_mail'])) {
			echo $_SESSION['fr_mail'];
			unset($_SESSION['fr_mail']);
		};
		?>"></label><br>
		<div class="error-form">
			<?php
				if(isset($_SESSION['e-mail'])) echo $_SESSION['e-mail']; unset($_SESSION['e-mail']);
			?>
		</div><br>

		<label>Wybrany Dystans:<br>
		<select name="distance">
			<option value="null"></option>
			<option value="17km">17 km</option>
			<option value="35km">35 km</option>
		</select>
		</label><br>
		<div class="error-form">
			<?php
				if(isset($_SESSION['e-distance'])) echo $_SESSION['e-distance']; unset($_SESSION['e-distance']);
			?>
		</div><br>

		<label>
			<input type="checkbox" name="checkbox1"> Oświadczam, że zapoznałem/am się z treścią regulaminu zawodów i zobowiązuję się do jego przestrzegania.
		</label> <br>
		<div class="error-form">
			<?php
				if(isset($_SESSION['e-checkbox1'])) echo $_SESSION['e-checkbox1']; unset($_SESSION['e-checkbox1']);
			?>
		</div>

		<label>
			<input type="checkbox" name="checkbox2">
			Wyrażam zgodę na wykorzystywanie i przetwarzanie danych osobowych zawartych w formularzu zgłoszeniowym w zakresie związanym z organizacją imprezy (ustawa z dnia 29.08.97r o ochronie danych osobowych Dz.Ust. nr 133).*
		</label><br>
		<div class="error-form">
			<?php
				if(isset($_SESSION['e-checkbox2'])) echo $_SESSION['e-checkbox2']; unset($_SESSION['e-checkbox2']);
			?>
		</div>
		<br>


		<input type="submit" value="wyślij">
	</form>
	<div class="error-form">
			<?php
				if(isset($_SESSION['success'])) echo $_SESSION['success']; unset($_SESSION['success']);
			?>
		</div>

<!-- Przycisk WYŚLIJ --><!-- Przycisk WYCZYŚĆ DANE -->
			  </div>
			</form>
			

	</section>
	<!-- /Section: formularz -->





	<footer>
		<div class="container">
			<div class="row">
				<div class="col-md-6">
					<ul class="footer-menu">
						<li><a href="http://www.facebook.com/6szczytow/" "target=_blank">Facebook</a></li>
						<li><a href="#"> Dla Prasy</a></li>
					</ul>
				</div>
				<div class="col-md-6 text-right copyright">
					&copy;Copyright - 6 szczytów.
                    <div class="credits">
                       
                        Created   by <a href="https://groshkover.com/">Groshkover</a>                    </div>
				</div>
			</div>	
		</div>
	</footer>

    <!-- Core JavaScript Files -->
    <script src="js/jquery.min.js"></script>	 
    <script src="js/bootstrap.min.js"></script>
	<script src="js/jquery.sticky.js"></script>
    <script src="js/jquery.easing.min.js"></script>	
	<script src="js/jquery.scrollTo.js"></script>
	<script src="js/jquery.appear.js"></script>
	<script src="js/stellar.js"></script>
	<script src="js/nivo-lightbox.min.js"></script>
	
    <script src="js/custom.js"></script>
	<script src="js/css3-animate-it.js"></script>
    <script src="contactform/contactform.js"></script>
    
</body>

</html>

Tak wygląda check-form

<?php
	session_start();

	if (isset($_POST['name'])) {
		
		$allOK = true;

		//name
		$name = $_POST['name'];

		$check = '/[a-ząęółśżźćń]+$/';
	    if(!preg_match($check, $name))
	    {
	      $allOK = false;
	      $_SESSION['e-name'] = "Podane imie jest niepoprawne!";
	    }

	    //nazwisko
	    $surname = $_POST['surname'];

		$check = '/[a-ząęółśżźćń]+$/';
	    if(!preg_match($check, $surname))
	    {
	      $allOK = false;
	      $_SESSION['e-surname'] = "Podane nazwisko jest niepoprawne!";
	    }

	    //city 
	    $city = $_POST['city'];
	    $city = htmlentities($city, ENT_QUOTES, "UTF-8");
		if(strlen($city)<3)
		{
			$allOK = false;
			$_SESSION['e-city'] = "Nazwa miejscowości jest za krótka";
		}

		if(strlen($city)>40)
		{
			$allOK = false;
			$_SESSION['e-city1'] = "Nazwa miejscowości jest za długa";
		}

		//birth
		$birth = $_POST['birth'];



		//sex
		@$sex = $_POST['sex'];
		if(!isset($sex))
	    {
	      $allOK = false;
	      $_SESSION['e-sex'] = "Nie podałeś płci";
	    }

	    //tel
	    $tel = $_POST['tel'];
	    if(strlen($tel)!=9 || !is_numeric($tel))
	    {
	      $allOK = false;
	      $_SESSION['e-tel'] = "Wpisz poprawny numer telefonu!";
	    }

	    //mail
		$mail = $_POST['mail'];

		$emailSafe = filter_var($mail, FILTER_SANITIZE_EMAIL);
		if((filter_var($emailSafe, FILTER_VALIDATE_EMAIL)==false) || $emailSafe != $mail)
		{
			$allOK = false;
			$_SESSION['e-mail'] = "Wpisz poprawny adres e-mail!";
		}

		//distance
		$distance = $_POST['distance'];
		if ($distance == "null") {
			$allOK = false;
			$_SESSION['e-distance'] = "Proszę wybrać odpowiedni dystans.";
		}

		//checkboxes
		@$checkbox1 = $_POST['checkbox1'];
		if(!isset($checkbox1))
	    {
	      $allOK = false;
	      $_SESSION['e-checkbox1'] = "Nie zaakceptowałeś checkboxa";
	    }

	    @$checkbox2 = $_POST['checkbox2'];
		if(!isset($checkbox2))
	    {
	      $allOK = false;
	      $_SESSION['e-checkbox2'] = "Nie zaakceptowałeś checkboxa";
	    }


	    //Zapamiętaj wprowadzone dane
		$_SESSION['fr_name'] = $name;
		$_SESSION['fr_surname'] = $surname;
		$_SESSION['fr_city'] = $city;
		$_SESSION['fr_birth'] = $birth;
		$_SESSION['fr_sex'] = $sex;
		$_SESSION['fr_tel'] = $tel;
		$_SESSION['fr_mail'] = $mail;
		$_SESSION['fr_distance'] = $distance;
		$_SESSION['fr_checkbox1'] = $checkbox1;
		$_SESSION['fr_checkbox2'] = $checkbox2;


		if (isset($_POST['regulamin'])) $_SESSION['fr_regulamin'] = true;

		if ($allOK) {
			$to = $mail;

			// temat
			$subject = 'Potwierdzenie rejestracji';

			// wiadomość
			$message = "
			<html>
			<head>
				<meta charset='ut8-8'>
				<title>Potwierdzenie rejestracji</title>
			</head>
			<body>
				Witaj $name<br>
				<b>Twoje dane:</b><br>
				Imię: $name<br>
				Nazwisko: $surname<br>
				Miejscowość/Miasto: $city<br>
				Data Urodzenia: $birth<br>
				Płeć: $sex<br>
				Telefon: $tel<br>
				E-mail: $mail<br>
				Dystans: $distance<br>
				<br>
				Dziękujemy za udział w tym wydarzeniu, Dalsze wiadomości będą wysyłane na tego maila.
				<br>
				Pozdrawia Administrator Serwisu

			</body>
			</html>
			";
			$headers  = 'MIME-Version: 1.0' . "\r\n";
			$headers .= 'Content-type: text/html; charset="utf-8"' . "\r\n";
			$headers .= 'From: <zgloszenia@pawelbrandgu.nazwa.pl>' . "\r\n";

			// Wysłanie e-maila do usera.
			mail($to, $subject, $message, $headers);

			//wysłanie maila do admina
			$to = "6szczytow@gmail.com";

			// temat
			$subject = 'Potwierdzenie rejestracji';

			// wiadomość
			$message = "
			<html>
			<head>
				<meta charset='ut8-8'>
				<title>Potwierdzenie Danych Użytkownika</title>
			</head>
			<body>
				<b>Twoje Osoby:</b><br>
				Imię: $name<br>
				Nazwisko: $surname<br>
				Miejscowość/Miasto: $city<br>
				Data Urodzenia: $birth<br>
				Płeć: $sex<br>
				Telefon: $tel<br>
				E-mail: $mail<br>
				Dystans: $distance<br>
			</body>
			</html>
			";
			$headers  = 'MIME-Version: 1.0' . "\r\n";
			$headers .= 'Content-type: text/html; charset="utf-8"' . "\r\n";
			$headers .= 'From: <zgloszenia@pawelbrandgu.nazwa.pl>' . "\r\n";

			mail($to, $subject, $message, $headers);


			$_SESSION['success'] = "<script>
	alert('Dziękujemy! Formularz został prawidłowo wypełniony. Na e-mail podany w formularzu została wysłana wiadomość z potwierdzeniem.') </script>";

			header("Location: index.php#form-data");
		} else {
			header("Location: index.php#form-data");
		}

	} else {
		header("Location: index.php#form-data");
	}
?>

 

Podobne pytania

0 głosów
1 odpowiedź 227 wizyt
pytanie zadane 12 stycznia 2016 w PHP przez kacper777 Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 259 wizyt
pytanie zadane 18 stycznia 2019 w PHP przez Kimik Nowicjusz (120 p.)
0 głosów
1 odpowiedź 211 wizyt
pytanie zadane 19 września 2018 w PHP przez Dominik Kłodziński Obywatel (1,610 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...