Nasıl "içeren PHP bir dize dezenfekte yoktur;

2 Cevap php

Ben kendisine gönderen basit bir PHP sayfası içine bu davayı döndü. Benim sorun ben parça karşılamak sonuçlarını göndererek am ve kızın isimlerinden biri Echo ... güzel bir isim olmasıdır.

The problem text I'm submitting is: Pole vault - Rachel Simons, Tow, 8-6; Echo Wilson, Cit, 8-0; Molly Randall, Tow, 7-0;

Yani Echo ardından beyaz boşluk tarafından izlenen bir noktalı virgül bakın ...

After submitting, it says: POST to /results/test.php not supported

Nihai hedef diğer bazı bilgileri ile birlikte bir veritabanına kaydetmek ve onu bulmak için bir arama sayfası var ve sadece ekranda tam sonuç yazdırmaktır. Ben bu bir hata aşağı almak için tüm benim veritabanı şeyler çıkarılır. Yani, ben kasten ismini yanlış yazım olabilir, ama gerek bu etrafında bir yolu var, değil mi??

Burada test PHP dosyası bulunuyor.

<html>
<head>
<title>title</title>
</head>
<body>
<?php
echo "<h3>Edit meet info below</h3>";
echo "<form action=\"test.php\" method=\"post\" id=\"submitForm\">";
echo "Full Results:<br/><textarea NAME=\"results\" id=\"results\" rows=\"20\" cols=\"80\" MAXLENGTH=\"8191\"></textarea><br/><br/>";
echo "<input type=\"submit\" name=\"submitMeet\" value=\"Submit\">";
echo "</form>";
?>
</body>
</html>

2 Cevap

Bazı topal güvenlik sistemi (Belki mod_security?) Isteklerini tarama ve onlar bir risk olabilir gibi bakmak olanları reddediyor var gibi geliyor.

Sen bunu devre dışı bırakabilirsiniz eğer web barındırma veya bir şey sormak zorunda kalacak. Keyfi metnin herhangi bir kombinasyonuna dayalı bir POST isteği reddeder NO PHP işlevi yoktur. (En azından, bu durumda değil)

Sadece Echo onun adı ... adını ... adını değiştirmek için almak gerekecek.

Cidden, webdestroya önerilen ne içine bakmak. Bu başarısız olursa, ben kirli hızlı-ve-çözüm POST isteğinde adlarını ayırmak için kullanın sınırlayıcı değiştirmek olabilir, ve sonra alındıktan sonra geri virgül bu sınırlayıcı değiştirmek düşünüyorum. Yani böyle bir şey olur POST:

Pole vault - Rachel Simons, Tow, 8-6||Echo Wilson, Cit, 8-0||Molly Randall, Tow, 7-0||

Sonra bunu:

$data = str_replace('||', ';', $the_data_you_posted);

Eğer sonuç girerken elle ayırıcısını yazın istemiyorsanız, siz örneğin, otomatik olarak noktalı dönüştürmek için küçük bir JavaScript yazabilirsiniz üzerine gönderin.