Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy ten kod da się jakoś 'udoskonalić'?
Forum PHP.pl > Forum > PHP
M@rtin
Witam, napisałem dziś kod i zastanawiam się czy zrobiłem to dobrze. Czy nie porobiłem jakichś nie potrzebnych rzeczy itp.
Kod
<?php
$username="root";
$password="123123";
$database="321321";
$tytul=$_GET['tytul'];

  
mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die("Nie odnaleziono bazy danych");
$query="SELECT * FROM podstrony WHERE tytul='$tytul'";
$result=mysql_query($query);
  
$num=mysql_numrows($result);
  
mysql_close();
  
$i=0;
while ($i < $num) {
  
$tytul=mysql_result($result,$i,"tytul");
$tresc=mysql_result($result,$i,"tresc");
  
  
echo '<h1><font color="#99CC00">'.$tytul.'</font></h1>'.$tresc;
  
$i++;
}
  
?>  
<h2>Komentarze:</h2>
<label value="lol"></label>
Dodaj własny<br />
<form action="<?php echo 'index.php?id=podstrona&tytul='.$tytul; ?>" method="post"><textarea name="tresc2" maxlength="36" rows="5" cols="20">
     Wpisz komentarz...
   </textarea><br /><br />
  <?php $account = rand(100000, 15);
             echo '<h2>' . $account . '</h2> <input type="hidden" name="account" value="' . $account . '">' . "\n";
  ?><br /><input type="text" name="cyfr" size="25" value="Tutaj przepisz powyższy ciąg cyfr."><br />
<input type="text" name="nick" value="twój nick"><br><img src="http://localhost/securimage/securimage_show.php" id="image" align="absmiddle" /> <br /><button type="submit" value="Wyślij">Wyślij</button></form> <hr>
<?php

if (IsSet($_POST['tresc2'])) {
$cyfr=$_POST['cyfr'];
$account=$_POST['account'];
if ($cyfr==$account) {
  $tresc2=$_POST['tresc2'];
$nick=$_POST['nick'];


mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die("Nie znaleziono bazy danych");
  
$query = "INSERT INTO komentarze VALUES ('$tytul','$tresc2','$nick')";
mysql_query($query);
  
mysql_close();  
echo '<h1>Komentarz dodany!</h1>';
}
else {
echo '<h1>Błędny kod!</h1>';
}
}
mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die("Nie odnaleziono bazy danych");
$query="SELECT * FROM komentarze WHERE tytul='$tytul'";
$result=mysql_query($query);
  
$num=mysql_numrows($result);
  
mysql_close();
  
$i=0;
while ($i < $num) {
  
$tytul3=mysql_result($result,$i,"tresc");
$nick3=mysql_result($result,$i,"podpis");
  
echo "$tytul3<br /> napisane przez: $nick3 <hr>";
  
$i++;
}

?>
PawelC
wrzuć to w tag php, będzie czytelniejszy i będzie można łatwiej wychwycić błędy.
Błąd jest tutaj:
  1. <?php
  2. $num=mysql_numrows($result);
  3. ?>

powinny być mysql_num_rows($result);

Po co trzy razy w jednym pliku łączysz się z bazą? Wystarczy dać raz:
  1. <?php
  2. mysql_connect('localhost',$username,$password);
  3. @mysql_select_db($database) or die("Nie odnaleziono bazy danych");
  4. ?>

Jak już koniecznie musisz się 3 razy łączyć, to wrzuć sobie połączenie z bazą do pliku i użyj include do wczytania pliku. Dzięki temu w razie czego zmienisz dane w jednym pliku, i nie będziesz musiał się bawić z 3 krotną zmianą tego samego.

Połączenie zamykaj po wykonaniu operacji na bazie, a Ty się połączysz, nie zdążysz wyświetlić wyników, a już zamykasz połączenie.

Jak wykonujesz zapytanie
  1. <?php
  2. mysql_query($query);
  3. ?>

dodaj sobie or die(mysql_error());
  1. <?php
  2. mysql_query($query) or die(mysql_error());
  3. ?>
dzięki czemu w razie czego, będziesz wiedział gdzie jest błąd i jaki.

Filtruj dane wejściowe i wyjściowe np korzystając z htmlspecialchars();, addslashes(); lub strip_tags();

Jeżeli przekazujesz coś metodą get np id to sprawdź czy id jest liczbą np przy pomocy: is_numeric();

Dane wprowadzane do bazy oczyszczaj przy pomocy: mysql_escape_string();
Sprawdzałeś czy kod działa?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.