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

Skrypt php jest wadliwy tak dokładniej "echo" nie zwraca się w przeglądarce

VPS Starter Arubacloud
+1 głos
221 wizyt
pytanie zadane 11 grudnia 2021 w PHP przez lukas1231233 Nowicjusz (200 p.)
<?php

$conn = @mysqli_connect("localhost", "root" ,"", "klienci");

if($conn->connect_errno!=0)
{
    echo "Error: ".$conn->connect_errno;
}
else
{
    
    $login = $_POST['login'];
    $haslo = $_POST['haslo'];

    $sql="'SELECT * FROM users WHERE login='$login' AND haslo='$haslo'";
    
    if($result = @$conn->query($sql))
    {
        $users = $result->num_rows;
        if($users==1)
        {
            $row = $result->fetch_assoc();
            $login = $row['login'];
            
            
            
            $result->close();
            echo $login;
            
        }
        else
        {
            
        }
    }
    
    $conn->close();
}
?>

 


 

Szukałem literówek ale nic nie znalazłem na dole dam jeszcze kod z html.
 

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8"/>
    <meta http-equiv="X-UA-COMPATIBLE" content="IE=edge,chrome=1"/>
    <link rel="stylesheet" href="logowanie.css" type="text/css" />
</head>    
<body>

<form action="logowanie.php" method="POST">

    <div id="container">
        <div class="logowanie">
            Login:     <div class="login"><input name="login" size="30" maxlength="30"> </div> <br><br>
            Hasło:     <div class="hasło"><input name="haslo" size="30" maxlength="30"> </div> <br><br>

            <button class="button">Zaloguj się</button>
        </div>
    </div>

</form>

</body>
</html>


 

Proszę o szybką odpowiedź w czym mam błąd.

komentarz 11 grudnia 2021 przez Wiciorny Ekspert (269,120 p.)
a gdzie ma zwrócić zawartość zmiennej, skoro nigdzie na html- nie zwracasz, czy też nie odbierasz danych ?
komentarz 11 grudnia 2021 przez lukas1231233 Nowicjusz (200 p.)
Form przekierowuje do pliku PHP w którym powinien wyświetlać się login osoby zalogowanej a nie wyświetla się. Pokaż mi twój pomysł.
komentarz 11 grudnia 2021 przez Wiciorny Ekspert (269,120 p.)
przedebuguj kod i sprawdź co zwracane masz z bazy, tak się pracuje ... jeśli nic nie przychodzi znaczy że na drodzę gdzies jest błąd sprawdź co zwraca Ci zapytanie
komentarz 12 grudnia 2021 przez lukas1231233 Nowicjusz (200 p.)

@lukas1231233, Dzięki wszystkim za odpowiedź.

3 odpowiedzi

+1 głos
odpowiedź 12 grudnia 2021 przez VBService Ekspert (251,210 p.)
edycja 12 grudnia 2021 przez VBService

Pomimo, że pierwszy <button> w formularzu np. w Chromie jest domyślnie typowany do submit dobrze jest to "jawnie" zapisać

<button type="submit" class="button">Zaloguj się</button>

a błąd Moim zdaniem masz tu, ten apostrof jest niepotrzebny - przed SELECT

$sql="'SELECT * FROM users WHERE login='$login' AND haslo='$haslo'"

dlatego zapytanie zwraca błąd przez co kod w if-e się nie wykonuje.  wink
 

 

P.S. Do sprawdzania czy formularz zwraca oczekiwane dane możesz użyć var_dump()

<?php
 
$conn = @mysqli_connect("localhost", "root" ,"", "klienci");
 
if($conn->connect_errno!=0)
{
    echo "Error: ".$conn->connect_errno;
}
else
{
    var_dump($_POST); // <= TUTAJ
    
    $login = $_POST['login'];
    $haslo = $_POST['haslo'];
 
    $sql="SELECT * FROM users WHERE login='$login' AND haslo='$haslo'";
     
    if($result = @$conn->query($sql))
    {
        $users = $result->num_rows;
        if($users==1)
        {
            $row = $result->fetch_assoc();
            $login = $row['login'];
             
             
             
            $result->close();
            echo $login;
             
        }
        else
        {
             
        }
    }
     
    $conn->close();
}
?>

 

Na Twoim miejscu "przerobiłbym" trochę ten skrypt php, ponieważ każde "wywołanie" logowanie.php w pierwszej kolejności "tworzy" połączenie do bazy danych ( @mysqli_connect ) przed sprawdzeniem zawartości zmiennych z formularza choćby najprostszym poleceniem np. empty()

0 głosów
odpowiedź 11 grudnia 2021 przez Wiciorny Ekspert (269,120 p.)

Teraz widzę problem.
Po pierwsze formularz nie zawiera "inputów" tylko divy, stąd  sprawdź podczas pracy jak normalny programista kod w trakcie pracy, co zwraca zapytanie i czy w ogóle formularz jest poprawnie przesłany.
 

<div class="login"><input name="login" size="30" maxlength="30"> </div> 

przesyłasz inputy w divie o tej samej nazwie okej, ale twój forumlarz powinien mieć "input" submit .... a masz 

 <button class="button">Zaloguj się</button>
   <input type="submit" name="submit" value="Zaloguj się" />

to nie przesyła formularza. nie wywołuje oczekiwanej akcji 
Ważne: Jeśli użyjesz elementu button w formularzu HTML, różne przeglądarki prześlą różne wartości. Internet Explorer prześle tekst między znacznikami i, podczas gdy inne przeglądarki prześlą zawartość atrybutu value.

1
komentarz 12 grudnia 2021 przez Comandeer Guru (599,730 p.)

button wewnątrz formularza domyślnie wysyła formularz, więc to akurat powinno działać.

Ważne: Jeśli użyjesz elementu button w formularzu HTML, różne przeglądarki prześlą różne wartości. Internet Explorer prześle tekst między znacznikami i, podczas gdy inne przeglądarki prześlą zawartość atrybutu value.

Mamy 2021 rok, IE ma jakieś 0.7% udziału w rynku. 

0 głosów
odpowiedź 12 grudnia 2021 przez Comandeer Guru (599,730 p.)

Skoro nic nie jest zwracane, to możliwe, że błędy są rzucane przez metody do obsługi bazy danych. Problem w tym, że wstawiłeś tam @, które tłumi błędy. Usuń to i zobacz, czy nic się nie pojawiło.

Podobne pytania

0 głosów
1 odpowiedź 260 wizyt
0 głosów
1 odpowiedź 513 wizyt
pytanie zadane 15 grudnia 2019 w PHP przez Lodomir Początkujący (480 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 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!

...