2015-10-01 3 views
0

Я создаю окно чата в codeigniter, но после ввода имени и сообщения появляется всплывающее окно с указанием «Запрещено».codeigniter chat box не работает

Я действительно путают то, что я поставил вместо shout.php здесь (chatbox.php ') $ .post (' shout.php 'load_data, функция (данные) {

вместо' shout.php "Я поставил http://localhost/myfoldername/application/views/shout.php

мой контроллер money_c

function chat(){ 

    $this->load->view('chatbox'); 
} 

chatbox.php

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Chat Box</title> 
<style type="text/css"> 
<!-- 
.shout_box { 
    background: #627BAE; 
    width: 260px; 
    overflow: hidden; 
    position: fixed; 
    bottom: 0; 
    right: 20%; 
    z-index:9; 
} 
.shout_box .header .close_btn { 
    background: url(images/close_btn.png) no-repeat 0px 0px; 
    float: right; 
    width: 15px; 
    height: 15px; 
} 
.shout_box .header .close_btn:hover { 
    background: url(images/close_btn.png) no-repeat 0px -16px; 
} 

.shout_box .header .open_btn { 
    background: url(images/close_btn.png) no-repeat 0px -32px; 
    float: right; 
    width: 15px; 
    height: 15px; 
} 
.shout_box .header .open_btn:hover { 
    background: url(images/close_btn.png) no-repeat 0px -48px; 
} 
.shout_box .header{ 
    padding: 5px 3px 5px 5px; 
    font: 11px 'lucida grande', tahoma, verdana, arial, sans-serif; 
    font-weight: bold; 
    color:#fff; 
    border: 1px solid rgba(0, 39, 121, .76); 
    border-bottom:none; 
    cursor: pointer; 
} 
.shout_box .header:hover{ 
    background-color: #627BAE; 
} 
.shout_box .message_box { 
    background: #FFFFFF; 
    height: 200px; 
    overflow:auto; 
    border: 1px solid #CCC; 
} 
.shout_msg{ 
    margin-bottom: 10px; 
    display: block; 
    border-bottom: 1px solid #F3F3F3; 
    padding: 0px 5px 5px 5px; 
    font: 11px 'lucida grande', tahoma, verdana, arial, sans-serif; 
    color:#7C7C7C; 
} 
.message_box:last-child { 
    border-bottom:none; 
} 
time{ 
    font: 11px 'lucida grande', tahoma, verdana, arial, sans-serif; 
    font-weight: normal; 
    float:right; 
    color: #D5D5D5; 
} 
.shout_msg .username{ 
    margin-bottom: 10px; 
    margin-top: 10px; 
} 
.user_info input { 
    width: 98%; 
    height: 25px; 
    border: 1px solid #CCC; 
    border-top: none; 
    padding: 3px 0px 0px 3px; 
    font: 11px 'lucida grande', tahoma, verdana, arial, sans-serif; 
} 
.shout_msg .username{ 
    font-weight: bold; 
    display: block; 
} 
--> 
</style> 

<script type="text/javascript" src="<?php echo base_url();?>assets/js/jquery-1.9.0.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 

    // load messages every 1000 milliseconds from server. 
    load_data = {'fetch':1}; 
    window.setInterval(function(){ 
    $.post('shout.php', load_data, function(data) { 
     $('.message_box').html(data); 
     var scrolltoh = $('.message_box')[0].scrollHeight; 
     $('.message_box').scrollTop(scrolltoh); 
    }); 
    }, 1000); 

    //method to trigger when user hits enter key 
    $("#shout_message").keypress(function(evt) { 
     if(evt.which == 13) { 
       var iusername = $('#shout_username').val(); 
       var imessage = $('#shout_message').val(); 
       post_data = {'username':iusername, 'message':imessage}; 

       //send data to "shout.php" using jQuery $.post() 
       $.post('shout.php', post_data, function(data) { 

        //append data into messagebox with jQuery fade effect! 
        $(data).hide().appendTo('.message_box').fadeIn(); 

        //keep scrolled to bottom of chat! 
        var scrolltoh = $('.message_box')[0].scrollHeight; 
        $('.message_box').scrollTop(scrolltoh); 

        //reset value of message box 
        $('#shout_message').val(''); 

       }).fail(function(err) { 

       //alert HTTP server error 
       alert(err.statusText); 
       }); 
      } 
    }); 

    //toggle hide/show shout box 
    $(".close_btn").click(function (e) { 
     //get CSS display state of .toggle_chat element 
     var toggleState = $('.toggle_chat').css('display'); 

     //toggle show/hide chat box 
     $('.toggle_chat').slideToggle(); 

     //use toggleState var to change close/open icon image 
     if(toggleState == 'block') 
     { 
      $(".header div").attr('class', 'open_btn'); 
     }else{ 
      $(".header div").attr('class', 'close_btn'); 
     } 


    }); 
}); 

</script> 
</head> 

<body> 
<div class="shout_box"> 
<div class="header">chat box<div class="close_btn">&nbsp;</div></div> 
    <div class="toggle_chat"> 
    <div class="message_box"> 
    </div> 
    <div class="user_info"> 
    <input name="shout_username" id="shout_username" type="text" placeholder="Your Name" maxlength="15" /> 
    <input name="shout_message" id="shout_message" type="text" placeholder="Type Message Hit Enter" maxlength="100" /> 
    </div> 
    </div> 
</div> 
</body> 
</html> 

shout.php

<?php 
####### db config ########## 
$db_username = 'root'; 
$db_password = ''; 
$db_name = 'money1'; 
$db_host = 'localhost'; 
####### db config end ########## 

if($_POST) 
{ 
    //connect to mysql db 
    $sql_con = mysqli_connect($db_host, $db_username, $db_password,$db_name)or die('could not connect to database'); 

    //check if its an ajax request, exit if not 
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') { 
     die(); 
    } 

    if(isset($_POST["message"]) && strlen($_POST["message"])>0) 
    { 
     //sanitize user name and message received from chat box 
     //You can replace username with registerd username, if only registered users are allowed. 
     $username = filter_var(trim($_POST["username"]),FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH); 
     $message = filter_var(trim($_POST["message"]),FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH); 
     $user_ip = $_SERVER['REMOTE_ADDR']; 


     //insert new message in db 
     if(mysqli_query($sql_con,"INSERT INTO shout_box(user, message, ip_address) value('$username','$message','$user_ip')")) 
     { 
      $msg_time = date('h:i A M d',time()); // current time 
      echo '<div class="shout_msg"><time>'.$msg_time.'</time><span class="username">'.$username.'</span><span class="message">'.$message.'</span></div>'; 
     } 

     // delete all records except last 10, if you don't want to grow your db size! 
     mysqli_query($sql_con,"DELETE FROM shout_box WHERE id NOT IN (SELECT * FROM (SELECT id FROM shout_box ORDER BY id DESC LIMIT 0, 10) as sb)"); 
    } 
    elseif($_POST["fetch"]==1) 
    { 
     $results = mysqli_query($sql_con,"SELECT user, message, date_time FROM (select * from shout_box ORDER BY id DESC LIMIT 10) shout_box ORDER BY shout_box.id ASC"); 
     while($row = mysqli_fetch_array($results)) 
     { 
      $msg_time = date('h:i A M d',strtotime($row["date_time"])); //message posted time 
      echo '<div class="shout_msg"><time>'.$msg_time.'</time><span class="username">'.$row["user"].'</span> <span class="message">'.$row["message"].'</span></div>'; 
     } 
    } 
    else 
    { 
     header('HTTP/1.1 500 Are you kiddin me?'); 
     exit(); 
    } 
} 

, но после ввода имени и сообщение оповещения окно выскочит, показывая «Запрещено».

+0

Я думаю, проблема связана с этой строкой: $ .post ('shout.php', load_data, function (data). URL 'shout.php' является локальным, поэтому он попытается загрузить его из любой папки, в настоящее время. Убедитесь, что вы сами можете получить доступ к странице shout.php, используя свой браузер, и поместите здесь этот URL-адрес. – Christian

+0

@manju. Сообщение должно быть в 'controller', где находится ваш' shout.php'? – Gayathri

+0

@Christian http: //localhost/myfoldername/application/views/shout.php. Правильно ли это – manju

ответ

0

Я не думаю, что вы полностью понимаете архитектуру MVC, и на самом деле это не место для объяснения.

Я предлагаю вам изучить его больше, но то, что может работать для вас здесь, чтобы изменить вашу функцию контроллера для этого:

function chat(){ 
    $this->load->view('chatbox');  
} 

function shout(){ 
    $this->load->view('shout'); 
} 

Затем вы должны убедиться, что URL (маршрут) работает.

Предположим, текущий URL является www.mysite.com/someController/chat/

, то новый URL будет www.mysite.com/someController/shout/

Если этот URL не работает, то вам нужно будет отсортировать маршрут, чтобы он работал.

Если URL работает, то вам нужно обновить URL JQuery из

.post('shout.php', load_data, function(data) { 

в

.post('/someController/shout/', load_data, function(data) { 

TL; DR функция JQuery пост обращается к Фуле через URL, как реальный человек. Он не может загрузить файл напрямую.

Смежные вопросы