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

Kurs PHP2 - header nie przekierowuje do 'gra.php'

Object Storage Arubacloud
–1 głos
549 wizyt
pytanie zadane 20 września 2016 w PHP przez Michał Samolewski Bywalec (2,240 p.)

Witam,

jestem aktualnie w kursie P. Mirosława "PHP 2". Odcinek został już przeze mnie przepracowany kilka razy w celu utrwalenia informacji. Po kilkudniowej przerwie od programowania postanowiłem sprawdzić swoją pamięć i wykonać identyczny skrypt, co w tym odcinku. W folderze htdocs stworzyłem oddzielny folder o nazwie "osadnicy2" (folder osadnicy zostawiłem w celu ewentualnego zaglądania do gotowego kodu, jakby coś mi się zapomniało). Napisałem cały skrypt i tu pojawia się problem. Po wpisaniu dobrych danych przy logowaniu (login: adam, hasło: qwerty) nie przekierowuje mnie do pliku "gra.php", tylko do "zaloguj.php" i nic się nie wyświetla. Jest "biała strona". Przeanalizowałem swój kod z tym gotowym i nie znalazłem problemu. Apache oraz Mysql oczywiście są w XAMPP'ie włączone. Ktoś wie w czym może być problem?

 

Kod index.php:

<?php

	session_start();

?>
<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta charset="utf-8" />
	<title>Strona logowania</title>
</head>

<body>
<h1>Zaloguj się do gry</h1>

	<form action="zaloguj.php" method="POST">	
	
		Login: <input type="text" name="login" /><br /><br />
		Hasło: <input type="password" name="haslo" /><br /><br />
		<input type="submit" value="Zaloguj się" />
		
	</form>
	
<?php

if(isset($_SESSION['blad'])) echo $_SESSION['blad'];

?>	

</body>
</html>

 

 

Kod zaloguj.php:

<?php
	
	session_start();

	require_once "connect.php";
	
	$polaczenie = @new mysqli($host, $dblogin, $dbpassword, $dbname);
	
	if($polaczenie->connect_errno!=0)
	{
		echo "Error: ".$polaczenie->connect_errno;
	}
	
	else
	{
		$login = $_POST['login'];
		$haslo = $_POST['haslo'];
		
		$sql = "SELECT * FROM uzytkownicy WHERE login='$login' AND pass='$haslo'";
		
		if($zapytanie = @$polaczenie->query($sql))
		{
			$ile_userow = $zapytanie->num_rows;
			if($ile_userow>0)
			{
				$wiersz = $zapytanie->fetch_assoc();
				$_SESSION['user'] = $wiersz['user'];
				$_SESSION['email'] = $wiersz['email'];
				$_SESSION['drewno'] = $wiersz['drewno'];
				$_SESSION['kamien'] = $wiersz['kamien'];
				$_SESSION['zboze'] = $wiersz['zboze'];
				$_SESSION['dnipremium'] = $wiersz['dnipremium'];
				
				unset($_SESSION['blad']);
				$zapytanie->close();
				header('Location: gra.php');
				
			}
			
			else
			{
				$_SESSION['blad'] = '<span style="color: red;">Nieprawidłowa nazwa użytkownika lub hasło.</span>';
				header('Location: index.php');
			}
		}
		
	

		$polaczenie->close();
	}

?>

 

 

Kod gra.php:

<?php

	session_start();

?>
<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta charset="utf-8" />
	<title>Osadnicy - rozgrywka</title>
</head>

<body>

<?php

	echo "<p>Witaj ".$_SESSION['user']."!";
	echo "<p><b>Drewno<b/>: ".$_SESSION['drewno'];
	echo " | <b>Kamień</b>: ".$_SESSION['kamien'];
	echo " | <b>Zboże</b>: ".$_SESSION['zboze']."</p>";
	
	echo "<p><b>E-mail: </b>".$_SESSION['email'];
	echo "<br /><b>Dni premium: </b>".$_SESSION['dnipremium']."</p>";

?>

</body>
</html>

 

4 odpowiedzi

+3 głosów
odpowiedź 20 września 2016 przez Ehlert Ekspert (213,130 p.)
  1. Zainstaluj IDE
  2. Zainstaluj i skonfiguruj Xdebug
  3. Zainteresuj się debugowaniem i OOP
  4. Ciesz się bardziej zrozumiałym kodem i umiejętnością debugowania (dzięki której znajdziesz 75% bez pytań na forum yes
+2 głosów
odpowiedź 20 września 2016 przez CzlowiekSkrypt Nałogowiec (26,340 p.)
Wywal "@" z kodu a stanie się jasność
komentarz 20 września 2016 przez Michał Samolewski Bywalec (2,240 p.)
Problem w tym, że robiłem to. I dalej pusta strona bez żadnego błędu.
+1 głos
odpowiedź 20 września 2016 przez Lid$ Mądrala (6,300 p.)
Wyłączyłeś wykrywanie błędów więc musisz się domyślać... włącz zatem i się dowiesz.
komentarz 20 września 2016 przez Michał Samolewski Bywalec (2,240 p.)
Robiłem to. Dalej była pusta strona.
komentarz 20 września 2016 przez Lid$ Mądrala (6,300 p.)

Dupa tam xD nie zrobiłeś tego, bo by ci pokazało błąd i byś wiedział.

Połączenia w ogóle nie masz bo źle podpiąłeś plik:

 require_once "connect.php";

Powinno być tak:

 require_once("connect.php");

 

1
komentarz 20 września 2016 przez Arkadiusz Waluk Ekspert (288,330 p.)

@Lid$ raczej to co ty piszesz to jest "dupa"...

Obydwa zapisy są w porządku i działają, z tego co mi wiadomo to nawet bardziej preferowany jest zapis, którego używa pytający (bez nawiasów).

Because include is a special language construct, parentheses are not needed around its argument. Take care when comparing return value.

http://php.net/manual/en/function.include.php (tu akurat o include, ale to samo tyczy się require/require_once)

1
komentarz 21 września 2016 przez Lid$ Mądrala (6,300 p.)

Ups. Byłem przekonany, że inaczej się nie da.. zwracam honor. No ale skoro usunął @ to raczej powinno mu pokazać cokolwiek..

Myślę że po prostu ten if się nie spełnia:

if($zapytanie = @$polaczenie->query($sql))

I nic w przeciwnym wypadku się nie pokazuje bo nie ma else dlatego zostaje w tym samym pliku i użytkownik widzi tylko białą stronę..

2
komentarz 21 września 2016 przez Arkadiusz Waluk Ekspert (288,330 p.)

Nie wiem czy chodzi konkretnie o tego ifa czy jeszcze o coś innego, ale na pewno usunięcie @ to dobry pomysł. Do tego poleciłbym ogólne włączenie błędów w środowisku testowym, albo w php.ini na stałe, a jak nie to zapisem

ini_set('display_errors', 'on');

na początku danego skryptu.

0 głosów
odpowiedź 21 września 2016 przez 0e85dc6eaf Dyskutant (8,840 p.)
Jeśli korzystasz z tej samej bazy danych co na odcinku to zmiast kolumny login była kolumna user

Podobne pytania

+1 głos
1 odpowiedź 122 wizyt
pytanie zadane 18 lutego 2017 w Hostingi, domeny, usługi przez baid Nowicjusz (220 p.)
+1 głos
2 odpowiedzi 480 wizyt
pytanie zadane 15 sierpnia 2015 w PHP przez krecik1334 Maniak (58,390 p.)
0 głosów
3 odpowiedzi 158 wizyt
pytanie zadane 2 grudnia 2015 w C i C++ przez Karoll98 Początkujący (400 p.)

92,757 zapytań

141,679 odpowiedzi

320,429 komentarzy

62,101 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

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!

...