SQL - izpis

Tole kodo spodaj naložim pred headerjem (verjetno nima veze), zdaj me pa zanima, kako bi v samem contentu izpisal tole vrstico, kjer ima zapis vrednost $verify, ki jo podam v url-ju.

SELECT vem kako narediti, ampak sintakse ne "zadanem"..

Poskusil sem <?php echo SELECT field1,field2,field3 FROM wpposts WHERE postcontent = '$verify'"; ?>

Hvala za pomoč.

Tole naložim pred headerjem:
<?php
$mysqli = new mysqli("host", "user", "pass", "xxx");
$verify = $mysqli->realescapestring($_GET['verify']); // escape GET var

$query = "SELECT * FROM wpposts WHERE postcontent = '$verify'"; // Build query

if ($result = $mysqli->query($query)) { // Check return query

while ($row = $result->fetch_assoc()) { // Fetch Row
    $query = "UPDATE wp_posts SET post_status = 'publish' WHERE post_content = '$verify'"; // Update query

    $mysqli->query($query); // Run
}

$result->close(); // free result set

}
?>

mogoče tale vrstica nagaja: $result->close(); // free result set ?

4 odgovori

Glede na to, da maš WP, bi za začetek raje uporabil WP classe za ta job:
https://codex.wordpress.org/Class_Reference/wpdb

Drugače pa izpiši si zgeneriran sql stavek z verify kodo in jo prilepi v phpmyadmin. Tam ti bo izpisalo, če je napaka kje v queryu.

1

Hvala, bom probal preuredit.

Še eno vprašanje. Kako pa je to iz varnostnega vidika?

Trenutno je takole, uporabnik odda formo (Contact form 7), na mejl dobi link (koda v prvem postu) in ko ga klikne, se postu spremeni status iz pending v published.

Je možno, da preko forme nekdo vnese kakšno kodo, ki bi npr. pobrisala bazo wordpress-a? Če ja, kaj bi bil najboljši način, da se to prepreči? Stripslashes? Hvala

Paziti moraš na spremenljivke, ki jih dobiš od uporabnika in se uporabljajo za buildanje querya. V prvem postu si se pravilno lotil (realescapestring), v primeru, da uporabljaš WP classe lahko uporabiš metodo prepare:

https://codex.wordpress.org/ClassReference/wpdb#ProtectQueriesAgainstSQLInjectionAttacks
https://codex.wordpress.org/ClassReference/wpdb#RunAnyQueryontheDatabase

Dodatno se lahko zavaruješ še tako, da preveriš tipe vseh podanih spremenljivk. Recimo, da je tvoj "verify" vedno 6 mestno celo število. V tem primeru vedno preverjaš, če je to res.

Predvidi čim več in nikoli ne zaupaj uporabniku (: