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

Co tu jest znowu źle?

Object Storage Arubacloud
0 głosów
163 wizyt
pytanie zadane 18 kwietnia 2019 w PHP przez trixter310 Obywatel (1,440 p.)

Co tu znowu tej przeglądarce nie pasuje?

Mam taki kod

<?php

require_once "connect.php";

$con = @new mysqli($host , $db_user, $db_password, $db_name);

$opd = " select * from anwser";
$anwser = $_POST['anwser'];
if($_POST['anwser']==true)
{
  echo "Zdobywasz punkt";
}
else
{
  echo "Brak punktu";
}

?>

Jak nic nie wpisze do inputów to wychodzi 

Notice: Undefined index: anwser in D:\xamp\htdocs\www\quiz.php on line 8

Notice: Undefined index: anwser in D:\xamp\htdocs\www\quiz.php on line 9
Brak punktu,

czyli teorytycznie działa, ale po co są te błędy?

2 odpowiedzi

+2 głosów
odpowiedź 18 kwietnia 2019 przez Arkadiusz Waluk Ekspert (287,950 p.)
wybrane 18 kwietnia 2019 przez trixter310
 
Najlepsza
Dopóki nic nie wpiszesz w pola i nie wyślesz formularza to te elementy nie istnieją w $_POST. Stąd właśnie komunikaty, że odwołujesz się do nieistniejących elementów. Wypadałoby sprawdzić czy tam są (np. isset) i dopiero wtedy się do nich odwołać czy tam wykonywać na nich jakieś operacje.

PS nadawaj lepsze tytuły pytań, "co tu nie działa" nikomu nic nie mówi.
PS2 przeglądarka nic do tego nie ma, to interpreter PHP.
komentarz 18 kwietnia 2019 przez trixter310 Obywatel (1,440 p.)
Dzięki
komentarz 18 kwietnia 2019 przez Ehlert Ekspert (212,670 p.)

Gdyby tak w wersji 8 php, zawartość posta była zwracana tylko przez funkcję... Która przy innych metodach http zwracałaby null... Cały ten rakowy kod musiałby ewaluować. Świat stawałby się lepszy.

@Arkadiusz Waluk co o tym myślisz?

komentarz 18 kwietnia 2019 przez Arkadiusz Waluk Ekspert (287,950 p.)
Dlaczego nie, byłoby to coś w przód. Z tym, że te same problemy są np. z danymi z GET, sesji, ciasteczek, więc jak już to zrobiłbym jeden standard dla wszystkiego. No i nie zawsze zwrócenie nulla może być pożądane, a te tablice jak rozumiem byłyby stopniowo wycofywane, aby to miało sens. Przydałaby się więc też funkcja sprawdzenia istnienia albo jakaś kontrola przez argument?

Inna rzecz, że wszystkiego zmianami w składni nie poprawimy i nawet nie ma sensu nadmiernie próbować. Jak ktoś nie umie pisać i nie może się nauczyć to po prostu nie umie, trudno. Pomimo starań i chęci wszystkiego się nie zrobi bez woli ludzi. Co innego jak to niewiedza, wtedy w akurat podanym przykładzie automatycznie by się naprawiało. Tylko to niestety też długi proces zanim ludzie zaczną się ogarniać, aby korzystać z nowszej wersji, tym bardziej ci nieświadomi.
0 głosów
odpowiedź 18 kwietnia 2019 przez mordimer Mądrala (5,720 p.)

Nie sprawdzasz czy istnieje ten klucz w tablicy $_POST stąd ten bład. Zobacz tak :

$opd = " select * from anwser";

if(isset($_POST['anwser']) && $_POST['anwser']==true)

 

komentarz 18 kwietnia 2019 przez trixter310 Obywatel (1,440 p.)
Czyli to mam dopisać?
komentarz 19 kwietnia 2019 przez mordimer Mądrala (5,720 p.)

Zobacz coś takiego :

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
     var_dump($_POST);
}

zobaczysz wtedy jakie dane masz w tablicy post po wysłaniu forma. Jeżeli zrobiłeś tylko coś takiego:

if($_POST['anwser']==true){

}

A wchodzisz na dany adres pierwszy raz to zawsze dostaniesz błąd bo odwołujesz się do czegoś co nie istnieje. Natomiast jak wyślesz formularz postem  ale w tablicy $_POST nie będzie klucza "anwser" to również dostaniesz błąd. Dlatego to:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    //do tego ifa wejdzie tylko gdy wyślesz formularz metodą post
    var_dump($_POST);//to ci wypluje co masz w tej tablicy

    if(isset($_POST['anwser']) && $_POST['anwser'] == true){
    //tu wejdzie tylko gdy będzie istnieć w tablicy post klucz anwser i klucz anwser bedzie równy true
    }
}

zabezpieczy cię w tym przypadku.

komentarz 20 kwietnia 2019 przez trixter310 Obywatel (1,440 p.)

teraz mam taki kod

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    //do tego ifa wejdzie tylko gdy wyślesz formularz metodą post
    var_dump($_POST);//to ci wypluje co masz w tej tablicy
    require_once "connect.php";

    $con = @new mysqli($host , $db_user, $db_password, $db_name);
    $opd = "SELECT * FROM anwser";
    $anwser = $_POST['anwser'];
    if($_POST['anwser'])
    {
      echo "Zdobywasz punkt";
    }
    else
    {
      echo "Brak punktu";
    }
    }

    if(isset($_POST['anwser']) && $_POST['anwser'] == true){
    //tu wejdzie tylko gdy będzie istnieć w tablicy post klucz anwser i klucz anwser bedzie równy true
    }



?>

i takie błędy 

array(0) { } 
Notice: Undefined index: anwser in D:\xamp\htdocs\www\quiz.php on line 9

Notice: Undefined index: anwser in D:\xamp\htdocs\www\quiz.php on line 10

Podobne pytania

0 głosów
3 odpowiedzi 1,469 wizyt
pytanie zadane 23 października 2015 w C i C++ przez szymi666 Bywalec (2,020 p.)
0 głosów
3 odpowiedzi 199 wizyt
pytanie zadane 29 października 2015 w C i C++ przez KlataMiLata Bywalec (2,120 p.)
0 głosów
0 odpowiedzi 98 wizyt
pytanie zadane 12 czerwca 2020 w C# przez milyy Nowicjusz (240 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

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

...