문자열을 이스케이프 처리하고 항목을 다시 저장하면 반복적으로 이스케이프 처리되는 문제가 디버깅하려고합니다 (자체 코드 아님).Typo3 v4.5.30 자동 이스케이프 문자열을 사용합니까?
코드는 mysql_real_escape_string을 사용합니다. 그러나 마술 따옴표가 꺼져 있어도 내 액션이 호출 될 때 이후 변수가 이미 인용되어 있으므로 mysql_real_escape_string을 호출하면 따옴표가 두 배가됩니다. 항목이 다시 저장 될 때마다 점점 더 많은 조각이 쌓입니다.
그래서 데이터베이스에 가기 전에 항목을 이스케이프 처리 (한 번) 한 다음 페이지에 표시 할 때 이스케이프 처리하지 않도록해야합니다.
내 행동은과 같이 시작 :
public function adminAction() {
$prizes = $_POST['tx_xxx_bingofrontend']['prize'];
//at this point my prize[] elements are already quoted, why?
foreach ($prizes as $key => $prize) {
foreach ($prize as $field => $value) {
// echo "Magic quotes is " . (get_magic_quotes_gpc() ? "ON" : "OFF");
// echo strip_tags($value) ;die;
// OFF gets printed
$cleanedValues[$field] = mysql_real_escape_string(strip_tags($value));
}
.... more code
내가 TYPO3의 v4.5.30을 사용하고
, 내 액션 코드 화재 전에 탈출하지 호출 어딘가에 만든 TYPO3 설정 또는 가능하게 확장 API 호출이?
문자열이 제대로 표시되고 제대로 다시 저장되는지 어떻게 확인할 수 있습니까?
감사합니다.
업데이트 : 지금이 코드를 가지고 :
public function adminAction() {
$postsvars = t3lib_div::_POST();
$prizes = $postsvars['tx_xxx_xxfrontend']['prize'];
foreach ($prizes as $key => $prize) {
foreach ($prize as $field => $value) {
//echo "Magic quotes is " . (get_magic_quotes_gpc() ? "ON" : "OFF");
// echo strip_tags($value) ;die;
$cleanedValues[$field] = $GLOBALS['TYPO3_DB']->quoteStr(strip_tags($value),'tx_xxx_domain_model_prize');
갱신하기 전에 각 전에 실행
작성하고 제대로 잘 모르겠어요 (슬래시를 추가하는 방법은 호출에 내 TABLENAME을 사용하지만, 너무 좋아 보인다) 보인다. 내가 물건을 위로 읽고 제거 할 때 슬래시는 나의 모델처럼 표시 : 슬래시의 제거 내가 원하는 것이 아니다 데이터베이스에 저장됩니다
public function UnEscapePrize(){
$this->setTitle(stripslashes($this->getTitle()));
..... other vars get un-escaped
}
. 나는보기를 위해 그들을 제거하고 싶다. 그렇게하려면 어떻게해야합니까?
업데이트 2 : 아니면 아무것도 걱정하지 않습니까? 는 typo3입니다. 4.5.3/extbase 1.3은 기본 업데이트를 사용하고 메소드를 추가 할 때 SQL 삽입 공격에 취약합니다. 그것은 문자열 concat를 사용하여 SQL 조각을 누른 다음 그것은 있지만 준비된 진술을 사용하는 경우 수 있습니다. 나는 아직도 문자열 concat SQL을 많이 사용하는 곳에서 왔습니다. 그래서이 걱정은 저에게 두 번째 자연입니다.
정말 extbase 기반 확장입니까? Extensions는 extbase, pi_base 또는 pur PHP 코드를 기반으로 할 수 있습니다. 확장이 pi_base를 확장 할 것으로 기대합니다. f.e.를 사용하는 경우. exec_INSERTquery mysql_real_escape_string이 자동으로 처리됩니다. – maholtz