2012-06-07 3 views
0

У меня есть сценарий, который позволяет художникам редактировать свой профиль. Одно дело - проблема. Я не могу как дезинформировать то, что пользователь ввел. Каждый раз, когда «помещается в данные», не отображается, поскольку он сокращает короткий PHP-код.Не удается дезинформировать введенные пользователем данные

Вот моя форма для био:

username = $_SESSION['username']; 
    $pass = $_SESSION['password']; 
    include ("../database.php"); 
    $result = mysql_query("SELECT * FROM members WHERE username='$username' AND  password='$pass' AND artist='Y'"); 

while($row = mysql_fetch_array($result)){ 

     echo '<div id="artistsbio"><form action="phpscripts/artistupdate.php" method="post"> 
     <textarea name="bio" rows="10" cols="80" name="bio" value="'. $row['bio']. '" class="bio">'. $row['bio']. '</textarea><br> 
     <div id="probwarn"><t1>Everything is still in the beta stage so there are bound to be a few problems. If you spot one please <a href="mailto:[email protected]"><b>tell us about it.</b></a></t1></div> 

     </div>'; 

Вот скрипт, который добавления в базу данных;

$username = $_SESSION['username']; 
    $pass = $_SESSION['password']; 

    $artistname = $_POST['artistname']; 
    $bio = $_POST['bio']; 




include ("../database.php"); 
mysql_query("UPDATE members SET bio='$bio', artistname ='$artistname' 
WHERE username='$username' AND password='$pass' AND artist='Y'"); 

$artisturl = mysql_query("SELECT * FROM members 
WHERE username='$username' AND password='$pass' AND artist='Y'"); 

while($row = mysql_fetch_array($artisturl)){ 
if (isset($_POST['submit'])) {header("location:../artists/artist.php? artist=".$row['artistname']."");} 
} 

} 
else echo'<p1>You must be an artist to use these features.</p1>'; 

Да, мне известно, что мне нужно обновить до mysqli, и я знаю, что мне нужно использовать подготовленные заявления. Нужно сначала разобраться в этом.

+2

Если вы перейдете к подготовленным заявлениям, то вы не будете пытаться решить эту проблему, расстроенную ... – sarnold

ответ

0

Если вы собираетесь использовать пользовательский ввод в запросе SQL, он должен быть продезинфицировать. Вот простой пример.

$username = mysql_real_escape_string($_SESSION['username']); 
$pass = mysql_real_escape_string($_SESSION['password']); 
$artistname = mysql_real_escape_string($_POST['artistname']); 
$bio = mysql_real_escape_string($_POST['bio']); 

include ("../database.php"); 
mysql_query("UPDATE members SET bio='$bio', artistname ='$artistname' 
WHERE username='$username' AND password='$pass' AND artist='Y'"); 
0

перед входом ничего в базу данных, просто назвать это:

mysql_real_escape_string($YOUR_POSSIBLY_QUOTED_STRING); 
Смежные вопросы