• 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

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
+1 głos
163 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 (237,870 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 (237,870 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 (203,950 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 (237,870 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 (579,920 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 (579,920 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ź 122 wizyt
0 głosów
1 odpowiedź 168 wizyt
pytanie zadane 15 grudnia 2019 w PHP przez Lodomir Początkujący (480 p.)

89,745 zapytań

138,348 odpowiedzi

309,376 komentarzy

59,659 pasjonatów

Advent of Code 2022

Top 15 użytkowników

  1. 747p. - Argeento
  2. 696p. - Mikbac
  3. 693p. - Michal Drewniak
  4. 692p. - rucin93
  5. 688p. - Łukasz Eckert
  6. 679p. - ssynowiec
  7. 678p. - TheLukaszNs
  8. 654p. - JMazurkiewicz
  9. 645p. - Hubert Chęciński
  10. 645p. - Jarosław Roszyk
  11. 640p. - adrian17
  12. 592p. - nidomika
  13. 506p. - tokox
  14. 501p. - Rafał Budzis
  15. 498p. - overcq
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

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

...