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

Nieloguje użytkownika (bez wyświetlania błędu / przejście do białej strony)

VPS Starter Arubacloud
0 głosów
207 wizyt
pytanie zadane 13 lutego 2018 w PHP przez KlemensGak Bywalec (2,210 p.)

Witam,

Mam problem, w którym nawet mój nauczyciel nie może rozwiązać, więc uznałem, że to forum to chyba ostatnia deska ratunku.

Robię mechanikę logowania na podstawie filmu Pasji Informatyki "PHP 2". Także kiedy zrobiłem projekt, po zmienieniu danych logowanie nie działa, po prostu biała strona. Usunąłem ukrywanie błędy, robię od nowa chyba 3 raz i nic. Nie wiem gdzie jest problem. Ma ktoś jakiś pomysł? Przesyłem poniżej kody PHP index.php, login.php, i connect.php. Przesyłam wersję uproszczoną gdzie widać (a raczej nie widać) gdzie jest problem.

index.php

<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta http-equiv="content-type" content="text/html" charset="utf-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
	<meta content="author" name="Grzegorz Klementowski">
	<title>Fruit shoop online!</title>
</head>
<body>
	<div id="opis">
		<h1>Opis</h1>
	</div>
	<form action="login.php" method="post">
	
		Login: <br/> <input type="text" name="login"/>     <br />
		Hasło: <br/> <input type="password" name="password"/> <br /><br />
		<input type="submit" value="Zaloguj się" />
	
	</form>
</body>
</html>

login.php

<?php

    require_once "connect.php";
    
    $connect = new mysqli($host, $db_user, $db_password, $db_name);
    
    if ($connect->connect_errno!=0)
    {
        echo "Error: ".$connect->connect_errno."<br/>Describe: ".$connect->connect_error;
    }
    else
    {
        $login = $_POST['login'];
        $password = $_POST['password'];
        
        $sql = "SELECT * FROM uzytkownicy WHERE user='$login' AND pass='$password'";

        if ($rezultat = $connect->query($sql))
        {
            $ilu_userow = $rezultat->num_rows;
            if($ilu_userow>0)

            {
                $wiersz = $rezultat->fetch_assoc();
                $user = $wiersz['user'];
                
                $rezultat->free_result();
                
                echo "Jest OK!"; 
                echo $user;

            }

            $connect->close();

        }
        else
        {
            
        }
    }
?>

connect.php

<?php

    $host = "localhost";
    $db_user = "root";
    $db_password = "";
    $db_name = "company accouting";

?>

 

komentarz 13 lutego 2018 przez KlemensGak Bywalec (2,210 p.)
Dodam jeszcze, że trochę mi zależy na czasie. Obronę pracy mam o 16, a mimo, że spędziłem cała noc nad tym jednym błędem to nic nie osiągnąłem, także proszę o pomoc.

1 odpowiedź

+1 głos
odpowiedź 13 lutego 2018 przez Hysek Obywatel (1,250 p.)
Musi gdzieś nie spełniać warunków zawartych w if, a że nie masz nic w else to Ci nic nie wyświetla ; )

Nie zawsze od razu wywali Ci błąd php.

 

dodaj w ifie if ($rezultat = $connect->query($sql)) else np echo "error 1"; , a w ifie if($ilu_userow>0) else echo "error 2";
i bedziesz wiedziec gdzie Cie nie przepuszcza
1
komentarz 13 lutego 2018 przez Hysek Obywatel (1,250 p.)
<?php
	if (!isset($_POST['login'])) {
		header("Location: index.php");
		exit();
	}
	require_once("connect.php");
	$connect = @new mysqli($host, $db_user, $db_password, $db_name);
	if ($connect->connect_errno!=0) {
		echo "Error: ".$connect->connect_errno;
		//echo "<br>Opis: ".$connect->connect_error;//echo "<br>Opis: ".$connect->connect_error;
	} else {
		$login = $_POST['login'];
		$password = $_POST['password'];
		$sql = "SELECT * FROM projekt_firma WHERE login='$login' AND password='$password'";
		if ($result = @$connect->query($sql)) {
			$how_much_user = $result->num_rows;
			if ($how_much_user > 0) {
				echo "wszystko ok<br>";
                echo $login;
				
				
				$result->free_result();
			} else {
				echo "error1"
			}
		} else {
			echo "error2";
		}
		$connect->close();
	}
?>

Coś na tej zasadzie

komentarz 13 lutego 2018 przez KlemensGak Bywalec (2,210 p.)

Znaczy tak próbowałem i wyświetla mi error1 w

        if ($rezultat = $connect->query($sql))
        {
            $ilu_userow = $rezultat->num_rows;
            if($ilu_userow>0)

            {
                $wiersz = $rezultat->fetch_assoc();
                $user = $wiersz['user'];
                
                $rezultat->free_result();
                
                echo $user;
                echo "error 2";
            }

            $connect->close();

        }
        else
        {
            echo "error 1";
        }

Ale za Chiny nie wiem dlaczego. Jest przecież w 100% poprawnie. Nawet na filmiku jest identycznie. Więc tego nie rozumiem.

komentarz 13 lutego 2018 przez Hysek Obywatel (1,250 p.)
no to faktycznie może nie powinno być spacji w nazwie bazy danych? albo coś jest nie tak z zapytaniem lecz na pierwszy rzut oka wygląda ok.

 

no i error 2 masz w złym miejscu powinien być za klamrą } else { i tutaj echo error 2}
komentarz 13 lutego 2018 przez KlemensGak Bywalec (2,210 p.)

Już te klamerki poprawiłem. Spróbuje stworzyć nową bazę danych i zobaczę, czy będzie działać.

Taak, no właśnie. Czyli wychodzi na to, że tu jest problem:

if ($result = @$connect->query($sql))

Tylko niestety nie widzę jaki. Wygląda to trochę tak jakby... był problem z kwerendą? tą kwerende wpisałem w SQL i działa, więc nie wiem czemu.

komentarz 13 lutego 2018 przez Hysek Obywatel (1,250 p.)
usuń znak @ sprzed $connect i jeśli nie masz wyciszonych błędów w php.ini to powinno Ci coś napisać na stronie. albo edytuj nazwę bazy danych żeby nie było tam spacji i tak samo zmień w connect.php bez spacji może pomoże.
komentarz 13 lutego 2018 przez KlemensGak Bywalec (2,210 p.)
Niestety, ale nie pomaga. Cóż, nie wiem co jest grane, ale jeszcze popróbuje.
komentarz 13 lutego 2018 przez Hysek Obywatel (1,250 p.)
edycja 13 lutego 2018 przez Hysek

a sprawdź jeszcze na samym początku skryptu czy istnieją przesłane dane z formularza.

 

dodaj tego ifa na samym początku.

 

if (!isset($_POST['login']) && (!isset($_POST['password']))) {
        echo "przesyłanie danych z formularza niepowiodło się";
    } else {
        echo "przesyłanie danych powiodło się!";
    }

Może po prostu w zapytaniu sql przesyłasz coś co nie istnieje.

Podobne pytania

–1 głos
0 odpowiedzi 305 wizyt
pytanie zadane 16 września 2016 w PHP przez Lid$ Mądrala (6,300 p.)
0 głosów
1 odpowiedź 118 wizyt
pytanie zadane 8 lutego 2019 w PHP przez veryape Użytkownik (580 p.)
0 głosów
0 odpowiedzi 427 wizyt

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...