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

[PHP]Mój pierwszy mały skrypt - ocena kodu

Object Storage Arubacloud
0 głosów
218 wizyt
pytanie zadane 13 grudnia 2016 w PHP przez KamilGG Użytkownik (690 p.)

Witam, napisałem swój pierwszy mały projekcik. Chciałbym żebyście spojrzeli na kod i dali jakieś wskazówki, czego nie robić itp. Jestem przekonany, że jest dużo błędów.

 

index.php:

<!doctype html>
<html lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>quiz</title>
</head>
<body>
<?php
//łączenie z baza
$baza = mysql_connect('localhost','root','') or die ('blad polaczenia z baza danych');
mysql_select_db('quiz') or die ('blad tabeli');
mysql_query('SET NAMES utf8');
$result = mysql_query("SELECT * FROM `pytania` ORDER BY RAND() LIMIT 1;");
$row = mysql_fetch_array($result) or die(mysql_error()); 
mysql_close($baza);
?>
<form action="sprawdz.php" method="post">
<?php
 echo 'Pytanie: '.($row["tresc"]);
 ?>
 <br>
  <input type="hidden" name="tresc" value="<?php echo ($row["tresc"]); ?>">
  <input type="radio" name="odp" value="<?php echo ($row["odpa"]); ?>" checked> <?php echo ($row["odpa"]); ?><br>
  <input type="radio" name="odp" value="<?php echo ($row["odpb"]); ?>"> <?php echo ($row["odpb"]); ?><br>
  <input type="radio" name="odp" value="<?php echo ($row["odpc"]); ?>"> <?php echo ($row["odpc"]); ?><br>
  <input type="radio" name="odp" value="<?php echo ($row["odpd"]); ?>"> <?php echo ($row["odpd"]); ?><br>
  <input type="hidden" name="poprawna" value="<?php echo ($row["poprawna"]); ?>">
  <input type="submit" value="sprawdz">
</form>
</body>
</html>

sprawdz.php

<?php
echo 'Pytanie: '.$_POST["tresc"].'<br>';
echo 'Twoja odpowiedz to: '.$_POST["odp"].'<br>';
$odp = $_POST["odp"];
$poprawna =  $_POST["poprawna"];

if ($poprawna == $odp)
{
	echo 'Brawo ! Twoja odpowiedz jest poprawna';
}
else
{
	echo 'Niestety ! Twoja odpowiedz nie jest poprawna';
}
?>

baza

index

sprawdz

 

2 odpowiedzi

+1 głos
odpowiedź 13 grudnia 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
wybrane 13 grudnia 2016 przez KamilGG
 
Najlepsza

Przede wszystkim nie używaj funkcji zaczynających się od mysql_, one już właściwie nie istnieją i w PHP w wersji >= 7 Twój skrypt w ogóle nie zadziała (fatal error).

echo 'Pytanie: '.$_POST["tresc"].'<br>';
echo 'Twoja odpowiedz to: '.$_POST["odp"].'<br>';

A co jak ktoś wejdzie bezpośrednio pod adres pliku sprawdz.php zamiast wysłać formularz? Danych w $_POST nie będzie, czyli posypią się ostrzeżenia. Wypadałoby się przed tym zabezpieczyć. Do odczytywanie danych z $_POST możesz użyć np. filter_input, można dzięki niemu zastosować od razu różne filtry/walidacje.

echo 'Pytanie: '.($row["tresc"]);
...
<?php echo ($row["tresc"]); ?>

To może nie żaden błąd, ale wg mnie te nawiasy tutaj nie są potrzebne, dodatkowe niepotrzebne znaki.
Co więcej zamiast <?php echo możesz użyć <?=, ale to też nie jest konieczność.

<input type="hidden" name="poprawna" value="<?php echo ($row["poprawna"]); ?>">

Nie wiem co dokładnie robisz, ale mam nadzieję, że masz świadomość, że poprawną odpowiedź można w takiej sytuacji bez problemu zmienić/podejrzeć. Podobnie treść pytania przesyłana przez $_POST, wg mnie dość dziwne podejście. Osobiście przesyłałbym tylko id a treść, poprawną odpowiedź itp. odczytywał z bazy przy sprawdzaniu.

Ogólnie tyle, mały skrypt, więc nie ma co wiele oceniać.

komentarz 13 grudnia 2016 przez KamilGG Użytkownik (690 p.)
Ogólnie nie wiedziałem za bardzo jak przesłać ten sam wiersz z bazy do sprawdz.php, bo jest on losowy. Mówisz że najlepiej przesłać id przez <input type="hidden" ? i potem pobrać poprawną w drugim pliku ?
komentarz 13 grudnia 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
Ja bym zrobił tak jak napisałem, w inpucie typu hidden wysyłał tylko id pytania i wszystko co potrzebne (treść pytania, poprawną czy inne odpowiedzi) wyciągał już w sprawdzaniu w drugim pliku.
+1 głos
odpowiedź 13 grudnia 2016 przez Chess Szeryf (76,710 p.)

Moim zdaniem powinieneś używać wersji PHP 7. Nie powinieneś zatem uczyć się mysql tylko mysqli. Od PHP 7 mysql zostało usunięte.

Podobne pytania

0 głosów
1 odpowiedź 251 wizyt
0 głosów
1 odpowiedź 436 wizyt
pytanie zadane 4 grudnia 2018 w PHP przez genesis12 Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 330 wizyt
pytanie zadane 5 listopada 2018 w PHP przez xxkondzioxx15 Obywatel (1,440 p.)

92,536 zapytań

141,377 odpowiedzi

319,452 komentarzy

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

...