Ersetzen von mysql_escape_string in einem benutzerdefinierten Plugin beim Wechsel zu PHP7

Ich habe ein speziell entwickeltes Plugin für eine WordPress-Website, die eine Online-Community auf php5.6 ist. Ich habe die Site ursprünglich nicht entwickelt, bin aber jetzt die Depotbank. Ich habe begrenzte Programmierkenntnisse. Mein Plugin hat ungefähr 6 Zeilen an verschiedenen Stellen:

$title = mysql_escape_string(stripslashes($_POST['title'])); $content = mysql_escape_string(stripslashes($_POST['article'])); return mysql_escape_string(stripslashes($_POST[$value])); 

Ich muss zu PHP7 wechseln, aber das ist natürlich eine veraltete und veraltete Methode der Interaktion mit der database.

Ich würde jemandes Hilfe lieben, die sauberste zuverlässigste Weise vorzuschlagen, diese genaue Linie mit entweder einer wpdb Frage oder einer esq_sql Methode zu ersetzen. Ich habe gesehen, dass dies in vielen Artikeln referenziert wurde, aber ich kenne die richtige Syntax oder Sicherheitsimplikationen nicht, da meine Zeilen dort auch ‘stripslashes’ haben.

Danke im Voraus.

Ein Beispiel für die Linien innerhalb der functionen meines Plugins sind folgende:

 function getPostValueOrNothing($value) { if (isset($_POST[$value])) { return mysql_escape_string(stripslashes($_POST[$value])); } else { return ""; } } 

und Sie können die wiederholte Abhängigkeit im folgenden Ausschnitt sehen:

 <?php global $post; $author_id = bp_displayed_user_id(); $user = get_user_by('id', $author_id); if (is_user_logged_in() && $author_id == get_current_user_id() && isset($_POST['userpinfield'])) { if ($_POST['userpinfield'] != "") { echo "

Validation error

"; } else { $post_id = -1; $attach_id = -1; $meta_key = "car_id"; $title = getPostValueOrNothing('title'); $content = $_POST['article']; $year = getPostValueOrNothing('year'); $pdate = getPostValueOrNothing('pdate'); $reg = getPostValueOrNothing('reg'); $commNo = getPostValueOrNothing('commNo'); $engineNo = getPostValueOrNothing('engineNo'); $vin = getPostValueOrNothing('vin'); $colour = getPostValueOrNothing('colour'); $ccolour = getPostValueOrNothing('to_close_colour'); $mileage = getPostValueOrNothing('mileage'); $location = getPostValueOrNothing('location'); if (isset($_POST['post_id']) && $_POST['post_id'] == -1) { if (null == get_page_by_title($title)) { $slug = str_replace(" ", "-", strtolower($title)); } else { $titleSlug = $title . "" . rand(1, 9); while (null != get_page_by_title($title)) { $titleSlug = $titleSlug . "" . rand(1, 9); } $slug = str_replace(" ", "-", strtolower($titleSlug)); } //Generate post $post_id = wp_insert_post( array( 'comment_status' => (!empty($_POST['comment_status']))? $_POST['comment_status'] : 'closed', 'ping_status' => 'closed', 'post_author' => $author_id, 'post_name' => $slug, 'post_title' => $title, 'post_content' => $content, 'post_status' => 'publish', 'post_type' => 'to_car' ) ); //Generate Topic post $topic_id = wp_insert_post( array( 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_author' => $author_id, 'post_name' => $slug . 'topic', 'post_title' => $title, 'post_content' => $content, 'post_status' => 'publish', 'comment_stattus' => 'open', 'post_type' => 'topic' ) ); add_post_meta($topic_id, $meta_key, $post_id); add_post_meta($topic_id, '_bbp_forum_id', $topic_id); add_post_meta($topic_id, '_bbp_topic_id', $topic_id); add_post_meta($topic_id, '_bbp_last_active_time', date('Ymd H:m:s')); add_post_meta($topic_id, '_bbp_author_ip', $_SERVER['REMOTE_ADDR']); add_post_meta($post_id, 'topic_id', $topic_id); add_post_meta($post_id, 'to_year', $year); add_post_meta($post_id, 'to_vin', $vin); add_post_meta($post_id, 'to_comm', $commNo); add_post_meta($post_id, 'to_engine_no', $engineNo); add_post_meta($post_id, 'to_reg', $reg); add_post_meta($post_id, 'to_date', $pdate); add_post_meta($post_id, 'to_mileage', $mileage); add_post_meta($post_id, 'to_colour', $colour); add_post_meta($post_id, 'to_close_colour', $ccolour); add_post_meta($post_id, 'to_views', 0); if (!function_exists('media_handle_upload')) { require_once(ABSPATH . "wp-admin" . '/includes/image.php'); require_once(ABSPATH . "wp-admin" . '/includes/file.php'); require_once(ABSPATH . "wp-admin" . '/includes/media.php'); } if ($_FILES) { foreach ($_FILES as $file => $array) { if ($_FILES['feature']['error'] !== UPLOAD_ERR_OK) { if ($_FILES['feature']['error'] != 4) { echo "upload error : " . $_FILES['feature']['error']; } } else { $attach_id = media_handle_upload('feature', $post_id); } } } if ($attach_id > 0) { update_post_meta($post_id, '_thumbnail_id', $attach_id); } $terms = get_terms('to_make'); if ($terms) { foreach ($terms as $term) { $modelValue = getPostValueOrNothing('model' . $term->term_id); if ($modelValue != "") { update_post_meta($post_id, 'to_model', $modelValue); break; } } } $post = get_post($post_id); $dummyUrl = plugins_url('/imgs/noCar.png', __FILE__); $html = '
Added a new Car
'; bp_fmsu_generate_activity($author_id, $slug, $html); echo "

Car Saved!

"; } else { $post_id = mysqli_real_escape_string(stripslashes($_POST['post_id'])); if (is_nan($post_id)) { echo "Unable to update the classified posting"; } else { $current_item = array( 'ID' => $post_id, 'post_title' => $title, 'post_content' => $content, 'comment_status' => (!empty($_POST['comment_status']))? $_POST['comment_status'] : 'closed', ); wp_update_post($current_item, true); if (is_wp_error($post_id)) { $errors = $post_id->get_error_messages(); foreach ($errors as $error) { echo $error; } } else { update_post_meta($post_id, 'to_year', $year); update_post_meta($post_id, 'to_vin', $vin); update_post_meta($post_id, 'to_comm', $commNo); update_post_meta($post_id, 'to_engine_no', $engineNo); update_post_meta($post_id, 'to_reg', $reg); update_post_meta($post_id, 'to_date', $pdate); update_post_meta($post_id, 'to_mileage', $mileage); update_post_meta($post_id, 'to_colour', $colour); update_post_meta($post_id, 'to_close_colour', $ccolour); update_post_meta($post_id, 'to_views', 0); //Generate Topic post if (!function_exists('media_handle_upload')) { require_once(ABSPATH . "wp-admin" . '/includes/image.php'); require_once(ABSPATH . "wp-admin" . '/includes/file.php'); require_once(ABSPATH . "wp-admin" . '/includes/media.php'); } if ($_FILES) { foreach ($_FILES as $file => $array) { if ($_FILES['feature']['error'] !== UPLOAD_ERR_OK) { if ($_FILES['feature']['error'] != 4) { echo "upload error : " . $_FILES['feature']['error']; } } else { echo "file uploaded"; $attach_id = media_handle_upload('feature', $post_id); } } } if ($attach_id > 0) { update_post_meta($post_id, '_thumbnail_id', $attach_id); } $post = get_post($post_id); $dummyUrl = plugins_url('/imgs/noCar.png', __FILE__); $html = '
Updated a Car
'; bp_fmsu_generate_activity($author_id, $slug, $html); echo '

Car updated!

'; } } } } } ?>

Solutions Collecting From Web of "Ersetzen von mysql_escape_string in einem benutzerdefinierten Plugin beim Wechsel zu PHP7"

Sie müssen die Variablen, die an wp_update_post() übergeben werden, nicht wp_update_post() da wp_update_post() nach einigen Überprüfungen die Daten an wp_insert_post() wp_insert_post() und wp_insert_post() Aufrufe von wp_insert_post() aufruft, wodurch alle Argumente bereinigt werden.

Auch add_post_meta und update_post_meta ebenfalls die gesamte Bereinigung für Sie.

Um Ihre Frage zu beantworten, würde ich mysql_escape_string durch $wpdb->esc_sql($_POST[$value]) ersetzen. Es ruft mysqli_real_escape_string falls unterstützt, oder mysql_real_escape_string andernfalls.

ABER wenn Sie innerhalb eines HTML-Codes esc_html($value) sollten Sie die Werte immer mit esc_html($value) , esc_url($url) , esc_attr($attribute) usw. esc_attr($attribute) .

Mehr: Datenvalidierung