i bir sohbet uygulaması yapıyorum. Benim sorunum ben bazı stilleri girerken ettiğimde, bu gibi gösteriyor, yani
dosyasında, o kadar kaydedilir
booota: (10 Ocak 2011 10:55) hi font>
Bu sohbet alanında gösterilir zaman, sadece emsallerine ilgili karakterleri değiştirir. örneğin < değiştirilir < ve benzerleri. Ama içeriği bu stilleri geçerli değildir
sohbet göndermek için benim jquery olduğunu
function sendChat(message, nickname) {
$.ajax({
type: "POST",
url: "process.php",
data: {
'function': 'send',
'message': message,
'youtube': youtube,
'nickname': nickname,
'file': file
},
dataType: "json",
success: function(data){
}
});
if(youtube==1)
youtube=0;
}
dosyasında sohbet tasarrufu için benim php
$nickname = htmlentities(strip_tags($_POST['nickname']), ENT_QUOTES);
$patterns = array("/:\)/", "/:D/", "/:p/", "/:P/", "/:\(/");
$replacements = array("<img src='smiles/smile.gif'/>", "<img src='smiles/bigsmile.png'/>", "<img src='smiles/tongue.png'/>", "<img src='smiles/tongue.png'/>", "<img src='smiles/sad.png'/>");
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
$blankexp = "/^\n/";
if(isset($_POST['youtube']) && $_POST['youtube'] == 1)
{
$ytvIDlen = 11; // This is the length of YouTube's video IDs
$idStarts = strpos($_POST['message'], "?v=");
if($idStarts === FALSE)
$idStarts = strpos($_POST['message'], "&v=");
if($idStarts === FALSE)
die("YouTube video ID not found. Please double-check your URL.");
$idStarts +=3;
$ytvID = substr($_POST['message'], $idStarts, $ytvIDlen);
//$message = '<object width="300" height="250" allowfullscreen="true" data="http://www.youtube.com/v/'.$ytvID.'" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true"><param name="src" value="http://www.youtube.com/v/'.$ytvID.'" /></object>';
$message = '<object width="425" height="355">
<param name="movie" value="http://www.youtube.com/v/'.$ytvID.'?fs=1"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowScriptAccess" value="always"></param>
<embed src="http://www.youtube.com/v/'.$ytvID.'?fs=1"
type="application/x-shockwave-flash"
allowscriptaccess="always"
width="300" height="250"
allowfullscreen="true"></embed>
</object>';
}
else
{
$message = htmlentities(strip_tags($_POST['message'],'<font>'), ENT_QUOTES);
if (!preg_match($blankexp, $message)) {
if (preg_match($reg_exUrl, $message, $url)) {
$message = preg_replace($reg_exUrl, '<a href="'.$url[0].'" target="_blank">'.$url[0].'</a>', $message);
}
$message = preg_replace($patterns, $replacements, $message);
}
}
//fwrite(fopen($file, 'a'), "<span>". $nickname . "</span>" . $message = str_replace("\n", " ", $message) . "\n");
fwrite(fopen($file, 'a'),"<span>". $nickname . ": (".date('d M, Y h:i A').")</span>" . "~\t~" . $message = str_replace("\n", " ", $message) . "\n");
break;
güncelleme sohbet alanı için benim jquery olduğunu
function updateChat(){
$.ajax({
type: "GET",
url: "update.php",
data: {
'state': state,
'file' : file,
'nickname': usernameid
},
dataType: "json",
cache: false,
success: function(data) {
alert(data.text);
if (data.text != null) {
for (var i = 0; i < data.text.length; i++) {
$('#chat-area').append($("<p>"+ data.text[i] +"</p>"));
}
document.getElementById('chat-area').scrollTop = document.getElementById('chat-area').scrollHeight;
}
instanse = false;
state = data.state;
setTimeout('updateChat()', 1);
}
});
}
Sonunda dosyadan sohbet almak benim php
$nickname = htmlentities(strip_tags($_GET['nickname']), ENT_QUOTES);
function getfile($f) {
if (file_exists($f)) {
$lines = file($f);
}
return $lines;
}
function getlines($fl){
return count($fl);
}
$state = htmlentities(strip_tags($_GET['state']), ENT_QUOTES);
$file = htmlentities(strip_tags($_GET['file']), ENT_QUOTES);
$finish = time() + 50;
$count = getlines(getfile($file));
while ($count <= $state) {
$now = time();
usleep(10000);
if ($now <= $finish) {
$count = getlines(getfile($file));
} else {
break;
}
}
if ($state == $count) {
$log['state'] = $state;
$log['t'] = "continue";
} else {
$text= array();
$log['state'] = $state + getlines(getfile($file)) - $state;
foreach (getfile($file) as $line_num => $line) {
if ($line_num >= $state) {
$line = explode("~\t~", $line);
if(substr($line[1], 0, 1)!='@')
$text[] = ''.$line[0].''.$line[1];
elseif($line[0]==$nickname || substr($line[1], 0, strlen('@'.$nickname))=='@'.$nickname)
$text[] = ''.$line[0].' '.$line[1].'';
}
$log['text'] = $text;
}
}