Autor Zpráva
Ikki
Profil
Zdravím, ačkoli je to naprosto primitivní hloupost, tak si nejsem schopen poradit, bohužel.
Jedná se o odkazem zaslané podmínky (nick=xx&action=star&id=1), přičemž mám podmínku if(isset($_GET['action']) == 'star'){ $mysqli->query("UPDATE private_message SET star='1' WHERE id='".$_GET['id']."' AND mess_id='1'");} což by mělo v tabulce "private_message" nastavit pro ID=1 hodnotu STAR=1, bohužel tak neučiní, přehlédl jsem něco?
Keeehi
Profil
Je špatně ta podmínka
if(isset($_GET['action']) && $_GET['action'] == 'star')



A ještě ti to trpí na SQL injection zranitelnost.
nick=xx&action=star&id=1'+OR+1=1+--+a
WordpressKokos
Profil
Ochrana:

$action = $_GET['action'];
$action = mysqli_real_escape_string($conn, $_GET['action']);

if ( $action == 'star') { $mysqli->query("UPDATE private_message SET star='1' WHERE id='".$_GET['id']."' AND mess_id='1'");}


$conn je variable připojení do databáze
Ikki
Profil
SQL Injection jsem si vědom, ačkoli mi způsob podmínky který jsi napsal nefungoval, tak jsem to zkusil takto.
Bohužel v případě, že to takto opět zapíši, tak stránka vyhodí chybu 500, prozatím není potřeba řešit zabezpečení když funkce sama o sobě nefunguje.
WordpressKokos
Profil
Error 500, to znamená že jsi se špatně připojil do databáze ne ?

Jak jsem řekl musíš nahradit $conn tvým připojením.

Zkontroluj jestli se správně připojuješ na databázi všude kde je to potřeba.
Ikki
Profil
Tvůj způsob se vůbec nevyužil, jelikož problém nastává v případě kdy využiji zápis podmínky od @Keeehi, jakmile jí přepíšu na cokoli jiného tak to opět funguje.
Připojení k databázi je v pořádku, jelikož v dané záložce je X dalších věcí využívajících SQL příkazy a vše kromě tohoto funguje.
// V případě, že využiju tvůj způsob, tak se opět dostávám do situace kdy to nefunguje, zkrátka hodnota se v databázi nezmění.
Keeehi
Profil
A dostane se skript dovnitř podmínky?
if(isset($_GET['action']) && $_GET['action'] == 'star'){
    echo "inside";
    $mysqli->query("UPDATE private_message SET star='1' WHERE id='".$_GET['id']."' AND mess_id='1'");
}
TomášK.
Profil *
WordpressKokos:
Rady, které tu dáváš, jsou špatné nebo zavádějící.

V #3 escapuješ do proměnné $action, což nemá žádný význam, protože jednak výsledek poté porovnáváš na rovnost s řetězcem 'star' a druhak proměnnou v SQL dotazu vůbec nepoužiješ. $_GET['id'], kvůli které může dojít k SQL injection, vůbec neošetřuješ.

Error 500, to znamená že jsi se špatně připojil do databáze ne
Error 500 znamená, že došlo v chybě na straně serveru. Špatné připojení k databázi je jen jeden z mnoha důvodů, proč k němu mohlo dojít. Tedy ano, zkontrolovat připojení dává smysl, ale Error 500 neznamená, že se špatně připojil do databáze.
Ikki
Profil
Když použiju to co jsi zaslal, tak jsem opět na chybě 500, tentokrát chyba nastává i v případě kdy podmínku IF přepíšu do špatného formátu se kterým se alespoň stránka načetla.

Vím, že to bude asi hloupý dotaz, ale umístnění v kódu by na to vliv mít nemělo když je to podmínka zakládající se na GET, nebo se pletu?
TomášK.
Profil *
Ikki:
Zřejmě je s tím SQL dotazem nějaký problém. Buď není správně připojení k databázi nebo neexistuje sloupec / tabulka v dotazu. Pokud server vrátí chybu 500, tak obvykle někam zaloguje, o jakou chybu se konkrétně jedná. Můžou existovat dva logy, jeden pro PHP, druhý pro web server. Zkus se po nich podívat a najít chybovou hlášku. Bude se to hodit i pro případné další chyby.
Keeehi
Profil
Ikki:
Když použiju to co jsi zaslal, tak jsem opět na chybě 500
Zapni si prosím tě výpis chyb. Pak neuvidíš obecnou 500 stránku ale normální s výpisem chyby.
Ikki
Profil
Omlouvám se za pozdní odpověď, musel jsem zařídit něco v práci.
V případě tohoto zápisu - if(isset($_GET['action']) && $_GET['action'] == 'star'){ $mysqli->query("UPDATE private_message SET star='1' WHERE id='".$_GET['id']."' AND mess_id='1'");} (řádek 56)
mi web vyhodí chybu Parse error: syntax error, unexpected ' ' (T_STRING) in /***/messages.php on line 56
WordpressKokos
Profil
$action = $_GET['action']; 
$action = mysqli_real_escape_string($conn, $action);

omlouvám se, ochrana je tento kód až zprovozníte query.
Ikki
Profil
Ochranu vůbec neřeším, té jsem si vědom.
Problém mám stále s QUERY, jelikož v případě jednom to nefunguje a v případě druhém to hází nesmyslnou chybu, každopádně děkuji i za tvůj příspěvek <3
Ikki
Profil
Byl by ještě nějaký nápad jak na to?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: