[ad_1]
عندما أضغط على زر الإرسال يظهر الخطأ أعلاه
ما حاولت:
<?php include "db1.php"; include "config.php"; $db = new database(); if (isset($_POST['submit'])){ $title = $_POST['title']; $content = $_POST['content']; $query = "INSERT INTO posts(title,content) VALUES('$title',$content')"; $run=$db->insert($query); } ?> <!DOCTYPE html> <html> <head> <title></title> </head> <body> </body> </html> <form action="insert_post.php" method="post" enctype="multipart/form-data"> <div class="form-group"> <center><table width="800" align="center" border="2"> <tr bgcolor="orange"> <td colspan="6"><h1 style="text-align:center">Post EDIT</h1></td> </tr> <tr> <td align="right" bgcolor="orange">Post title:</td> <td><input type="text" name="title" size="60"></td> </tr> <tr> <td align="right" bgcolor="orange">Post Content:</td> <td><textarea name="content" rows="15" cols="40"></textarea></td> </tr> <tr> <td colspan="6" align="center" bgcolor="orange"><input type="Submit" name="submit" value="Publish Now" /></td> </tr> </table>
الحل 1
وفقًا للكود الذي أرسلته، يوجد خطأ في بناء الجملة في السطر 9
$query = "INSERT INTO posts(title,content) VALUES('$title',$content')";
يجب أن يتغير هذا كما
$query = "INSERT INTO posts(title,content) VALUES('$title','$content')";
السبب كنت في عداد المفقودين الاقتباس من قبل $content
الحل 2
$query = "INSERT INTO posts(title,content) VALUES('$title',$content')";
ليس حلاً لسؤالك، ولكن مشكلة أخرى لديك.
لا تقم أبدًا بإنشاء استعلام SQL عن طريق سلسلة السلاسل. عاجلاً أم آجلاً، ستفعل ذلك باستخدام مدخلات المستخدم، وهذا يفتح الباب أمام ثغرة أمنية تسمى “حقن SQL”، وهي خطيرة على قاعدة بياناتك وعرضة للأخطاء.
اقتباس واحد في الاسم وتعطل البرنامج الخاص بك. إذا قام مستخدم بإدخال اسم مثل “Brian O’Conner” فيمكن أن يتعطل تطبيقك، فهذه ثغرة أمنية في حقن SQL، والتعطل هو أقل المشكلات، وهو إدخال مستخدم ضار ويتم ترقيته إلى أوامر SQL بجميع بيانات الاعتماد.
حقن SQL – ويكيبيديا[^]
حقن SQL[^]
هجمات حقن SQL على سبيل المثال[^]
PHP: حقن SQL – يدوي[^]
ورقة الغش لمنع حقن SQL – OWASP[^]
[ad_2]
コメント