2013-12-22 12 views
0

bbcode의 유효성을 검사하기 위해 PHP 코드를 작성 중이지만 오류가 없지만 bbcode가 입력을 확인하지 않습니다 ... 이유가 무엇입니까? 누락 된 뭔가?preg PHP 5.4의 유효성 확인 문제를 사용하여 bbcode에서 모두 일치

//============================================================// 
// Check if all BBCode are validated before posting something // 
//============================================================// 
/* Tag Color */ 
$openColorTagCounter = preg_match_all('#\[color=([a-zA-Z]+|\#[a-fA-F0-9]{3}[a-fA-F0-9]{0,3})\]#i', $body); 
$closeColorTagCounter = preg_match_all('#\[/color\]#i', $body); 
if ($openColorTagCounter > $closeColorTagCounter) { 
    $error = "Tag color opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openColorTagCounter < $closeColorTagCounter) { 
    $error = "Tag color closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Bold */ 
$openBoldTagCounter = preg_match_all('#\[bold\]#i', $body); 
$closeBoldTagCounter = preg_match_all('#\[/bold\]#i', $body); 
if ($openBoldTagCounter > $closeBoldTagCounter) { 
    $error = "Tag bold opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openBoldTagCounter < $closeBoldTagCounter) { 
    $error = "Tag bold closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Italic */ 
$openItalicTagCounter = preg_match_all('#\[italic\]#i', $body); 
$closeItalicTagCounter = preg_match_all('#\[/italic\]#i', $body); 
if ($openItalicTagCounter > $closeItalicTagCounter) { 
    $error = "Tag italic opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openItalicTagCounter < $closeItalicTagCounter) { 
    $error = "Tag italic closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Underline */ 
$openUnderlineTagCounter = preg_match_all('#\[underline\]#i', $body); 
$closeUnderlineTagCounter = preg_match_all('#\[/underline\]#i', $body); 
if ($openUnderlineTagCounter > $closeUnderlineTagCounter) { 
    $error = "Tag underline opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openUnderlineTagCounter < $closeUnderlineTagCounter) { 
    $error = "Tag underline closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Code */ 
$openCodeTagCounter = preg_match_all('#\[code\]#i', $body); 
$closeCodeTagCounter = preg_match_all('#\[/code\]#i', $body); 
if ($openCodeTagCounter > $closeCodeTagCounter) { 
    $error = "Tag code opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openCodeTagCounter < $closeCodeTagCounter) { 
    $error = "Tag code closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Line Numbers */ 
$openNumberTagCounter = preg_match_all('#\[number\]#i', $body); 
$closeNumberTagCounter = preg_match_all('#\[/number\]#i', $body); 
if ($openNumberTagCounter > $closeNumberTagCounter) { 
    $error = "Tag number opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openNumberTagCounter < $closeNumberTagCounter) { 
    $error = "Tag number closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Resized Image */ 
$openResizedImageTagCounter = preg_match_all('#\[img=([0-9]*)x([0-9]*)\]\[align=([A-Za-z]*)\]\[hspace=([0-9]*)\]\[vspace=([0-9]*)\](.+?)#i', $body); 
$closeResizedImageTagCounter = preg_match_all('#\[/img\]#i', $body); 
if ($openResizedImageTagCounter > $closeResizedImageTagCounter) { 
    $error = "Tag img resized opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openResizedImageTagCounter < $closeResizedImageTagCounter) { 
    $error = "Tag img resized closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Linked Image */ 
$openLinkedImageTagCounter = preg_match_all('#\[url=(.+?)\]\[img=([0-9]*)x([0-9]*)\]\[align=([A-Za-z]*)\]\[hspace=([0-9]*)\]\[vspace=([0-9]*)\](.+?)#i', $body); 
$closeLinkedImageTagCounter = preg_match_all('#\[/img\]\[/url\]#i', $body); 
if ($openLinkedImageTagCounter > $closeLinkedImageTagCounter) { 
    $error = "Tag img linked opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openLinkedImageTagCounter < $closeLinkedImageTagCounter) { 
    $error = "Tag img linked closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Normal Image */ 
$openImageTagCounter = preg_match_all('#\[img\]\[align=([A-Za-z]*)\]\[hspace=([0-9]*)\]\[vspace=([0-9]*)\](.+?)#i', $body); 
$closeImageTagCounter = preg_match_all('#\[/img\]#i', $body); 
if ($openImageTagCounter > $closeImageTagCounter) { 
    $error = "Tag img opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openImageTagCounter < $closeImageTagCounter) { 
    $error = "Tag img closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag UL */ 
$openUlTagCounter = preg_match_all('#\[ul\]#i', $body); 
$closeUlTagCounter = preg_match_all('#\[/ul\]#i', $body); 
if ($openUlTagCounter > $closeUlTagCounter) { 
    $error = "Tag ul opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openUlTagCounter < $closeUlTagCounter) { 
    $error = "Tag ul closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag LI */ 
$openLiTagCounter = preg_match_all('#\[li\]#i', $body); 
$closeLiTagCounter = preg_match_all('#\[/li\]#i', $body); 
if ($openLiTagCounter > $closeLiTagCounter) { 
    $error = "Tag li opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openLiTagCounter < $closeLiTagCounter) { 
    $error = "Tag li closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Video */ 
$openVideoTagCounter = preg_match_all('#\[video=([0-9]*)x([0-9]*)\]\[hspace=([0-9]*)\]\[vspace=([0-9]*)\]\[player_id=([0-9]*)\](.+?)#i', $body); 
$closeVideoTagCounter = preg_match_all('#\[/video\]#i', $body); 
if ($openVideoTagCounter > $closeVideoTagCounter) { 
    $error = "Tag video opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openVideoTagCounter < $closeVideoTagCounter) { 
    $error = "Tag video closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag SilverLight */ 
$openSilverlightTagCounter = preg_match_all('#\[silverlight=([0-9]*)x([0-9]*)\]\[hspace=([0-9]*)\]\[vspace=([0-9]*)\]\[player_id=([0-9]*)\](.+?)#i', $body); 
$closeSilverlightTagCounter = preg_match_all('#\[/silverlight\]#i', $body); 
if ($openSilverlightTagCounter > $closeSilverlightTagCounter) { 
    $error = "Tag silverlight opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openSilverlightTagCounter < $closeSilverlightTagCounter) { 
    $error = "Tag silverlight closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Center */ 
$openCenterTagCounter = preg_match_all('#\[center\]#i', $body); 
$closeCenterTagCounter = preg_match_all('#\[/center\]#i', $body); 
if ($openCenterTagCounter > $closeCenterTagCounter) { 
    $error = "Tag center opend and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openCenterTagCounter < $closeCenterTagCounter) { 
    $error = "Tag center closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Web */ 
$openUrlTagCounter = preg_match_all('#\[url=(.+?)\]#i', $body); 
$closeUrlTagCounter = preg_match_all('#\[/url\]#i', $body); 
if ($openUrlTagCounter > $closeUrlTagCounter) { 
    $error = "Tag url opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openUrlTagCounter < $closeUrlTagCounter) { 
    $error = "Tag url closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 

바보 같은 문제가 있지만 지금은 올바른 방법을 볼 수 없습니다. 누군가 내가 틀린 곳을 말해 줄 수 있니? 그 사이에 메리 크리스마스 !!!

+0

이 코드를 어딘가에 부르시겠습니까? – Calimero

+0

나는 두 개의 PHP 파일을 가지고있다. post.php 내가 볼 수있는 코드와 모든 출력을 보여주는 form.php를 둔다. ... 내가 오류를 발견하지 않으면 제출을 클릭하면 다른 PHP 파일이 모든 입력 (스팸, 해킹, 주사 등) 그리고 마지막으로 게시물이 게시됩니다. – Alecos

+0

입력에서 실패 할 $ * Counter 변수 값을 반향하여 시작할 수 있습니다. 숫자가 원하는 값인지 어설 션합니다 (테스트중인 정규 표현식이 틀리면 두 카운터로 끝날 수 있습니다 0으로 설정하고 성공 함). – Calimero

답변

0

감사합니다. 문제를 해결하고 솔루션을 게시합니다. 도와 주셔서 대단히 고맙습니다 :) 문제는 정규 표현식이 중복 된 항목을 호출하여 구조를 제대로 볼 수 없다는 것입니다. 이제는 일부 항목의 이름을 바꾸 었으며 위대한 작업을 수행했습니다. 이와 비슷한 상황에서 다른 사용자가 도움이되기를 바랍니다. 모든 사람들에게 즐거운 성탄절을 보내십시오 :) 좋은 주말 보내십시오.

//============================================================// 
// Check if all BBCode are validated before posting something // 
//============================================================// 
/* Tag Color */ 
$openColorTagCounter = preg_match_all('#\[color=([a-zA-Z]+|\#[a-fA-F0-9]{3}[a-fA-F0-9]{0,3})\]#i', $body); 
$closeColorTagCounter = preg_match_all('#\[/color\]#i', $body); 
if ($openColorTagCounter > $closeColorTagCounter) { 
    $error = "Tag color opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openColorTagCounter < $closeColorTagCounter) { 
    $error = "Tag color closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Bold */ 
$openBoldTagCounter = preg_match_all('#\[bold\]#i', $body); 
$closeBoldTagCounter = preg_match_all('#\[/bold\]#i', $body); 
if ($openBoldTagCounter > $closeBoldTagCounter) { 
    $error = "Tag bold opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openBoldTagCounter < $closeBoldTagCounter) { 
    $error = "Tag bold closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Italic */ 
$openItalicTagCounter = preg_match_all('#\[italic\]#i', $body); 
$closeItalicTagCounter = preg_match_all('#\[/italic\]#i', $body); 
if ($openItalicTagCounter > $closeItalicTagCounter) { 
    $error = "Tag italic opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openItalicTagCounter < $closeItalicTagCounter) { 
    $error = "Tag italic closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Underline */ 
$openUnderlineTagCounter = preg_match_all('#\[underline\]#i', $body); 
$closeUnderlineTagCounter = preg_match_all('#\[/underline\]#i', $body); 
if ($openUnderlineTagCounter > $closeUnderlineTagCounter) { 
    $error = "Tag underline opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openUnderlineTagCounter < $closeUnderlineTagCounter) { 
    $error = "Tag underline closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Code */ 
$openCodeTagCounter = preg_match_all('#\[code\]#i', $body); 
$closeCodeTagCounter = preg_match_all('#\[/code\]#i', $body); 
if ($openCodeTagCounter > $closeCodeTagCounter) { 
    $error = "Tag code opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openCodeTagCounter < $closeCodeTagCounter) { 
    $error = "Tag code closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Line Numbers */ 
$openNumberTagCounter = preg_match_all('#\[number\]#i', $body); 
$closeNumberTagCounter = preg_match_all('#\[/number\]#i', $body); 
if ($openNumberTagCounter > $closeNumberTagCounter) { 
    $error = "Tag number opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openNumberTagCounter < $closeNumberTagCounter) { 
    $error = "Tag number closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Resized Image */ 
$openResizedImageTagCounter = preg_match_all('#\[img-resized=([0-9]*)x([0-9]*)\]\[align=([A-Za-z]*)\]\[hspace=([0-9]*)\]\[vspace=([0-9]*)\]#i', $body); 
$closeResizedImageTagCounter = preg_match_all('#\[/img-resized\]#i', $body); 
if ($openResizedImageTagCounter > $closeResizedImageTagCounter) { 
    $error = "Tag img resized opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openResizedImageTagCounter < $closeResizedImageTagCounter) { 
    $error = "Tag img resized closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Linked Image */ 
$openLinkedImageTagCounter = preg_match_all('#\[url-linked=(.+?)\]\[img-linked=([0-9]*)x([0-9]*)\]\[align=([A-Za-z]*)\]\[hspace=([0-9]*)\]\[vspace=([0-9]*)\]#i', $body); 
$closeLinkedImageTagCounter = preg_match_all('#\[/img-linked\]\[/url-linked\]#i', $body); 
if ($openLinkedImageTagCounter > $closeLinkedImageTagCounter) { 
    $error = "Tag img linked opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openLinkedImageTagCounter < $closeLinkedImageTagCounter) { 
    $error = "Tag img linked closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Normal Image */ 
$openImageTagCounter = preg_match_all('#\[img\]\[align=([A-Za-z]*)\]\[hspace=([0-9]*)\]\[vspace=([0-9]*)\]#i', $body); 
$closeImageTagCounter = preg_match_all('#\[/img\]#i', $body); 
if ($openImageTagCounter > $closeImageTagCounter) { 
    $error = "Tag img opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openImageTagCounter < $closeImageTagCounter) { 
    $error = "Tag img closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag UL */ 
$openUlTagCounter = preg_match_all('#\[ul\]#i', $body); 
$closeUlTagCounter = preg_match_all('#\[/ul\]#i', $body); 
if ($openUlTagCounter > $closeUlTagCounter) { 
    $error = "Tag ul opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openUlTagCounter < $closeUlTagCounter) { 
    $error = "Tag ul closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag LI */ 
$openLiTagCounter = preg_match_all('#\[li\]#i', $body); 
$closeLiTagCounter = preg_match_all('#\[/li\]#i', $body); 
if ($openLiTagCounter > $closeLiTagCounter) { 
    $error = "Tag li opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openLiTagCounter < $closeLiTagCounter) { 
    $error = "Tag li closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Video */ 
$openVideoTagCounter = preg_match_all('#\[video=([0-9]*)x([0-9]*)\]\[hspace=([0-9]*)\]\[vspace=([0-9]*)\]\[player_id=([0-9]*)\]#i', $body); 
$closeVideoTagCounter = preg_match_all('#\[/video\]#i', $body); 
if ($openVideoTagCounter > $closeVideoTagCounter) { 
    $error = "Tag video opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openVideoTagCounter < $closeVideoTagCounter) { 
    $error = "Tag video closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag SilverLight */ 
$openSilverlightTagCounter = preg_match_all('#\[silverlight=([0-9]*)x([0-9]*)\]\[hspace=([0-9]*)\]\[vspace=([0-9]*)\]\[player_id=([0-9]*)\]#i', $body); 
$closeSilverlightTagCounter = preg_match_all('#\[/silverlight\]#i', $body); 
if ($openSilverlightTagCounter > $closeSilverlightTagCounter) { 
    $error = "Tag silverlight opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openSilverlightTagCounter < $closeSilverlightTagCounter) { 
    $error = "Tag silverlight closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Center */ 
$openCenterTagCounter = preg_match_all('#\[center\]#i', $body); 
$closeCenterTagCounter = preg_match_all('#\[/center\]#i', $body); 
if ($openCenterTagCounter > $closeCenterTagCounter) { 
    $error = "Tag center opend and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openCenterTagCounter < $closeCenterTagCounter) { 
    $error = "Tag center closed and not opened!"; 
    include("form.php"); 
    exit(); 
} 
/* Tag Web */ 
$openUrlTagCounter = preg_match_all('#\[url=(.+?)\]#i', $body); 
$closeUrlTagCounter = preg_match_all('#\[/url\]#i', $body); 
if ($openUrlTagCounter > $closeUrlTagCounter) { 
    $error = "Tag url opened and not closed!"; 
    include("form.php"); 
    exit(); 
} elseif ($openUrlTagCounter < $closeUrlTagCounter) { 
    $error = "Tag url closed and not opened!"; 
    include("form.php"); 
    exit(); 
}