• 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
524 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 (212,670 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 (287,950 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 (287,950 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ź 116 wizyt
pytanie zadane 18 lutego 2017 w Hostingi, domeny, usługi przez baid Nowicjusz (220 p.)
+1 głos
2 odpowiedzi 441 wizyt
pytanie zadane 15 sierpnia 2015 w PHP przez krecik1334 Maniak (58,390 p.)
0 głosów
3 odpowiedzi 152 wizyt
pytanie zadane 2 grudnia 2015 w C i C++ przez Karoll98 Początkujący (400 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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!

...