• 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

Object Storage Arubacloud
+1 głos
227 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 (270,110 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 (270,110 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 (253,340 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 (270,110 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 (601,110 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 (601,110 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ź 293 wizyt
0 głosów
1 odpowiedź 551 wizyt
pytanie zadane 15 grudnia 2019 w PHP przez Lodomir Początkujący (480 p.)

92,572 zapytań

141,422 odpowiedzi

319,643 komentarzy

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

...