• 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

VPS Starter Arubacloud
0 głosów
213 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,550 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,550 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ź 249 wizyt
0 głosów
1 odpowiedź 432 wizyt
pytanie zadane 4 grudnia 2018 w PHP przez genesis12 Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 327 wizyt
pytanie zadane 5 listopada 2018 w PHP przez xxkondzioxx15 Obywatel (1,440 p.)

92,453 zapytań

141,262 odpowiedzi

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

...