prosta wyszukiwarka

0

witam mam problem z prostą wyszukiwarką na samym początku wyrzuca mi błąd "nie wpisano żadnego słowa"

wyszukiwarka.html

<form action="szukaj.php" method="post">
            <select name="podstawaszukania">
                <option value="translate_title">Nazwa filmu     
                <option value="id_movie"> id filmu
                <option value="rating"> ocena
 
                    </select>
                    
                <input name="haslo" type="text" class="form-control" placeholder="tytuł">
		<button type="submit" class="btn btn-primary btn-block">szukaj</button>  
        </form>

szukaj.php

 <?php
    if (!$podstawaszukania||!$haslo)
    {   
        print "nie wpisano żadnedo hasła";
        exit;
    }
    $podstawaszukania=  addslashes($podstawaszukania);
    $haslo=  addslashes($haslo);
    $db= mysql_pconnect("localhost","root","filmy");
    if(!$db)
    {
     print"wystąpił bław połaczeniu "   ;
     exit;
     
    }
    mysql_select_db("filmy");
    $query="SELECT * FROM tb_movies WHERE ".$podstawaszukania." like '%".$haslo."%'";
    $result= mysql_query($query);
    $num_results=mysql_num_row($result);
    print"ilosc znalezionych filmów ".$num_results."</p>";
    for ($i=0; $i<$num_results; $i++ )
    {
        $row=  mysql_fetch_array($result);
        print ($i+1);
        print stripslashes($row["translate_title"]);
         print stripslashes($row["id_movie"]);
          print stripslashes($row["rating"]);
    }
            ?> 
0
  1. add slashes nie chroni przed sql injection
  2. strip slashes jest zbędne
  3. używaj PDO, albo chociaż (z głową, nie popełniając tych błędów co wyżej) mysqli_ - funkcje mysql_ są przestarzałe

A w temacie: zmienne przesłane w formularzu są dostępne w tablicy $_POST -> $_POST['podstawaszukania'].

  1. Nie pozwalaj na wpisanie dowolnego ciągu jako podstawaszukania (w tym momencie wyedytowanie Twojego formularza - tak, to jest możliwe - może spowodować, że zechcę sobie szukać w polu, które nie istnieje --- gdybyś w taki sam sposób robił logowanie, to bym sobie podmienił np. login = 'dzek' na id = 1 - wiele tym można zepsuć) --- sprawdzaj w PHP czy przesłana wartość to jest jedna ze znanych Tobie i oczekiwanych wartości (tj. translate_title, rating, id_movie).
  2. Zdecyduj się czy kod jest po angielsku czy po polsku. Baza jest po polsku - tabelki po angielsku. Część zmiennych po polsku, część po angielsku. Potem musisz się zastanawiać czy w pliku który tworzyłeś sobie 3 tygodnie temu używałeś haslo czy password, bo potrzebujesz się odwołać do danych z tamtego pliku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1