• 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)

0 głosów
67 wizyt
pytanie zadane 13 lutego w PHP, Symfony, Zend przez KlemensPL Nowicjusz (220 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 przez KlemensPL Nowicjusz (220 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 przez Hysek Początkujący (360 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 przez Hysek Początkujący (360 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 przez KlemensPL Nowicjusz (220 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 przez Hysek Początkujący (360 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 przez KlemensPL Nowicjusz (220 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 przez Hysek Początkujący (360 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 przez KlemensPL Nowicjusz (220 p.)
Niestety, ale nie pomaga. Cóż, nie wiem co jest grane, ale jeszcze popróbuje.
komentarz 13 lutego przez Hysek Początkujący (360 p.)
edycja 13 lutego 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 89 wizyt
0 głosów
1 odpowiedź 29 wizyt
0 głosów
0 odpowiedzi 49 wizyt
Oferty pracy dla początkujących programistów na portalu No Fluff Jobs
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

49,741 zapytań

91,700 odpowiedzi

185,222 komentarzy

24,201 pasjonatów

Przeglądających: 256
Pasjonatów: 13 Gości: 243

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...