🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.php
4 messages
4 total messages Started by sunriseweb.lublin Thu, 16 Apr 2015 17:11
PHP & SQL - Problem z porównaniem stringów
#230963
Author: sunriseweb.lublin
Date: Thu, 16 Apr 2015 17:11
30 lines
2382 bytes
Witam,
mój problem wygląda następująco:
mam generowany automatycznie element formularza typu 'select'

<select onchange="this.form.submit();" id="filter_Temat" name="temat">

<?php  

$wynikiQS = get_custom('wnioski_tematy');
$wynikiQS = explode('|',$wynikiQS);
foreach ( $wynikiQS as $wynikQS ) {
											
       if (($_POST['temat']) == $wynikQS) echo '<option value="'.$wynikQS.'" class="filterItem" selected>'.$wynikQS.'</option>';
        else echo '<option value="'.$wynikQS.'" class="filterItem">'.$wynikQS.'</option>';
                                        } ?>
</select>

Wybranie jakiejś opcji generuje zmienną $_POST['temat']

następnie wyszukuję w bazie danych rekordy spełniające warunek:

if (!empty($_POST['temat'])) { 
$temat = $_POST['temat'];
$resultsT = $wpdb->get_results( 'SELECT post_id FROM wp_postmeta WHERE meta_key = "temat" AND meta_value = "'.$temat.'"', OBJECT );

$wynikiQS jest pobierany z bazy danych
Strona jest na wordpressie.

Problem polega na tym, że zapytanie zawsze zwraca pusty wynik. Nawet jeśli istnieją wiersze, dla których meta_value zgadza się z tym co jest w zmiennej $_POST['temat']
Jeśli natomiast wpiszę do zapytania zamiast $temat, np. 'Temat 1' zapytanie zwraca odpowiednie rekordy.
Re: PHP & SQL - Problem z porównaniem stringów
#230964
Author: Lemat
Date: Thu, 16 Apr 2015 17:51
51 lines
2461 bytes
sunriseweb.lublin@gmail.com wrote:

> Witam,
> mój problem wygląda następująco:
> mam generowany automatycznie element formularza typu 'select'
> 
> <select onchange="this.form.submit();" id="filter_Temat" name="temat">
> 
> <?php
> 
> $wynikiQS = get_custom('wnioski_tematy');
> $wynikiQS = explode('|',$wynikiQS);
> foreach ( $wynikiQS as $wynikQS ) {
> 
>        if (($_POST['temat']) == $wynikQS) echo '<option
>        value="'.$wynikQS.'" class="filterItem"
>        selected>'.$wynikQS.'</option>';
>         else echo '<option value="'.$wynikQS.'"
>         class="filterItem">'.$wynikQS.'</option>';
>                                         } ?>
> </select>
> 
> Wybranie jakiejś opcji generuje zmienną $_POST['temat']
> 
> następnie wyszukuję w bazie danych rekordy spełniające warunek:
> 
> if (!empty($_POST['temat'])) {
> $temat = $_POST['temat'];
> $resultsT = $wpdb->get_results( 'SELECT post_id FROM wp_postmeta WHERE
> meta_key = "temat" AND meta_value = "'.$temat.'"', OBJECT );
> 
> $wynikiQS jest pobierany z bazy danych
> Strona jest na wordpressie.
> 
> Problem polega na tym, że zapytanie zawsze zwraca pusty wynik. Nawet jeśli
> istnieją wiersze, dla których meta_value zgadza się z tym co jest w
> zmiennej $_POST['temat'] Jeśli natomiast wpiszę do zapytania zamiast
> $temat, np. 'Temat 1' zapytanie zwraca odpowiednie rekordy.

po pierwsze i najważniejsze - SQL injection

po drugie: 
print_r($_POST);
po trzecie: 
echo 'SELECT post_id FROM wp_postmeta WHERE meta_key = "temat" AND 
meta_value = "'.$temat.'"';


-- 
Pozdrawiam
Lemat
Re: PHP & SQL - Problem z porównaniem stringów
#230965
Author: tomek
Date: Fri, 17 Apr 2015 07:51
9 lines
1257 bytes
echo '<option value="'.$wynikQS.'" 
class="filterItem">'.$wynikQS.'</option>';

A teraz się zastanów co będzie jeśli w zmiennej $wynikQS będzie coś w tym 
stylu:

$wynikQS = 'aaa "bbb" ccc><ddd';

Tomek 
Re: PHP & SQL - Problem z porównaniem stringów
#230966
Author: Rafal Podsiadly
Date: Mon, 22 Jun 2015 17:01
2 lines
1408 bytes
Nie podoba mi się ten kod ma dużo błędów.
Polecam się wpierw pouczyć programowania
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads