Latest Post

 Lập trình PHP có nhiều cách chuyển tiếng việt có dấu thành tiếng việt không dấu. Dưới đây tôi xin giới thiệu với các bạn cách chuyển đổi chí với function sau:

  1. function convert_name($str) {
  2. $str = preg_replace("/(à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ)/", 'a', $str);
  3. $str = preg_replace("/(è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ)/", 'e', $str);
  4. $str = preg_replace("/(ì|í|ị|ỉ|ĩ)/", 'i', $str);
  5. $str = preg_replace("/(ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ)/", 'o', $str);
  6. $str = preg_replace("/(ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ)/", 'u', $str);
  7. $str = preg_replace("/(ỳ|ý|ỵ|ỷ|ỹ)/", 'y', $str);
  8. $str = preg_replace("/(đ)/", 'd', $str);
  9. $str = preg_replace("/(À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ)/", 'A', $str);
  10. $str = preg_replace("/(È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ)/", 'E', $str);
  11. $str = preg_replace("/(Ì|Í|Ị|Ỉ|Ĩ)/", 'I', $str);
  12. $str = preg_replace("/(Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ)/", 'O', $str);
  13. $str = preg_replace("/(Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ)/", 'U', $str);
  14. $str = preg_replace("/(Ỳ|Ý|Ỵ|Ỷ|Ỹ)/", 'Y', $str);
  15. $str = preg_replace("/(Đ)/", 'D', $str);
  16. $str = preg_replace("/(\“|\”|\‘|\’|\,|\!|\&|\;|\@|\#|\%|\~|\`|\=|\_|\'|\]|\[|\}|\{|\)|\(|\+|\^)/", '-', $str);
  17. $str = preg_replace("/( )/", '-', $str);
  18. return $str;
  19. }

 Bạn sử dụng function trên như sau:

VD:

$text = "Blog An Lương";

echo convert_name($text);

Kết quả hiển thị sẽ là: Blog-An-Luong

Trường hợp bạn muốn chuyển tất cả thành chữ thường thì dùng code sau

Echo strtolower(convert_name($text));

khi đó nó sẽ thành " blog-an-luong

Chúc các bạn thành công!


 Mở file cat.php và tìm đoạn

Mã: Chọn hết
$alias = ( $alias == "" ) ? change_alias( $title ) : change_alias( $alias );

thêm vào sau
Mã: Chọn hết
$alias = strtolower($alias);


edit lại các thư mục thì trên URL sẽ hiển thị chủ đề với chữ thường

Tương tự với tên bài viết bạn mở file content.php làm tương tự

Trường hợp muốn sửa tất cả các file thì tìm trong thư mục includes/utf8/utf8_functions.php

 1. Mở file: detail.tpl (themes/themes đang dùng/modules/news/)

tìm đến các đoạn:
 <!-- BEGIN: related_new --><!-- BEGIN: related -->
thêm vào dưới nó:
 <div class="col-md-12"> .....Nội dung.... </div>
Sau khi thêm ta có dạng như sau:
 <!-- BEGIN: related_new --> <div class="col-md-12"> <p class="h3"><em class="fa fa-thumbs-o-up" aria-hidden="true">&nbsp;</em><strong>{LANG.related_new}</strong></p> <div class="clearfix"> <ul class="related list-inline"> <!-- BEGIN: loop --> <li> Nội dung 1:..... </li> <!-- END: loop --> </ul> </div> </div> <!-- END: related_new -->
Và:
 <!-- BEGIN: related --> <div class="col-md-12"> <p class="h3"><em class="fa fa-thumbs-o-down" aria-hidden="true">&nbsp;</em><strong>{LANG.related}</strong></p> <div class="clearfix"> <ul class="related list-inline"> <!-- BEGIN: loop --> <li> Nội dung 2:...... </li> <!-- END: loop --> </ul> </div> </div> <!-- END: related -->
2. Thêm hình ảnh minh họa cho bản tin:
Để hiện thị hình ảnh nhỏ bên tin bên phải hay trái hoặc dưới chuyên mục ta làm như sau
mở file: themes/default/css/news.css tìm đoạn css:
 div.news_column ul.related li { padding:0 4px 0 0; }
thêm float: left; ta được:
 div.news_column ul.related li { float: left; padding:0 4px 0 0; }
- Tiếp theo ta mở file mở file: themes/default/modules/news/detail.tpl
tìm:
 <!-- BEGIN: related_new --> <div class="col-md-12"> Nội dung 1:..... </div> <!-- END: related_new -->
và:
 <!-- BEGIN: related --> <div class="col-md-12"> Nội dung 2:..... </div> <!-- END: related -->
Thay thế toàn bộ nội dung 1 bằng code:
 <p class="h3"><em class="fa fa-thumbs-o-up" aria-hidden="true">&nbsp;</em><strong>{LANG.related_new}</strong></p> <div class="clearfix"> <ul class="related list-inline"> <!-- BEGIN: loop --> <li> <a class="show h4" href="{RELATED_NEW.link}" title="{RELATED_NEW.title}" <!-- BEGIN: tooltip -->data-content="{OTHER.hometext}" data-img="{OTHER.imghome}" data-rel="tooltip" data-placement="{TOOLTIP_POSITION}"<!-- END: tooltip -->><img src="{RELATED_NEW.imghome}" alt="{RELATED_NEW.title}" width="60" class="img_full img-thumbnail pull-left " />{RELATED_NEW.title}</a> <em>({RELATED_NEW.time})</em> <!-- BEGIN: newday --> <span class="icon_new">&nbsp;</span> <!-- END: newday --> </li> <!-- END: loop --> </ul> </div>
Thay thế toàn bộ nội dung 2 bằng code:
 <p class="h3"><em class="fa fa-thumbs-o-down" aria-hidden="true">&nbsp;</em><strong>{LANG.related}</strong></p> <div class="clearfix"> <ul class="related list-inline"> <!-- BEGIN: loop --> <li> <a class="show h4" href="{RELATED.link}" title="{RELATED.title}" <!-- BEGIN: tooltip -->data-content="{OTHER.hometext}" data-img="{OTHER.imghome}" data-rel="tooltip" data-placement="{TOOLTIP_POSITION}"<!-- END: tooltip -->><img src="{RELATED_NEW.imghome}" alt="{RELATED_NEW.title}" width="60" class="img_full img-thumbnail pull-left " />{RELATED.title}</a> <em>({RELATED.time})</em> <!-- BEGIN: newday --> <span class="icon_new">&nbsp;</span> <!-- END: newday --> </li> <!-- END: loop --> </ul> </div>
Tiếp theo mở file modules/news/theme.php tìm function detail_theme($news_contents, $array_keyword, $related_new_array, $related_array, $topic_array, $content_comment)
{
kéo xuống dưới tìm dòng: $xtpl->assign('RELATED_NEW', $related_new_array_i);
trước nó ta thêm đoạn:
 $related_new_array_i['title'] = nv_clean60($related_new_array_i['title'], 40);
Tìm tiếp đoạn: $xtpl->assign('RELATED', $related_array_i);
Thêm vào trước nó đoạn code:
 $related_array_i['title'] = nv_clean60($related_array_i['title'], 40);
đơn giản chỉ có thế thôi, chúc thành công!

Mật khẩu là một dãy ký tự được mã hóa khi lưu vào trong cơ sở dữ liệu, nhưng đôi khi chúng ta không thể nhớ nó là gì thì sẽ tìm cách khôi phục lại mật khẩu. Tuy nhiên nếu như bạn sử dụng NukeViet mà không sử dụng tính năng reset mật khẩu về mail thì ở bài này Thịnh chia sẻ với bạn cách lấy lại mật khẩu quản trị tối cao. Tuy nhiên bạn nên tiến hành lưu mật khẩu tối cao vào một nơi nào đó để đề phòng mất mật khẩu mà đỡ công reset lại.
Cũng xin lưu ý với các bạn thêm là trong NukeViet thì từ phiên bản 4.x trở đi mật khẩu sẽ không còn là mã hóa MD5 thông thường vì thế nếu bạn vào phpmyadmin để đổi mật khẩu theo dạng MD5 là hoàn toàn vô nghĩa không thể sử dụng được và chỉ có thể làm theo 1 trong 2 cách sau đây.
Sau đây là 2 cách đổi mật khẩu trong NukeViet

Cách 1:

Cách này là can thiệp code nhưng sau khi thực hiện xong thì bạn cần nhớ xóa đi để tránh bị lợi dụng.
  1. Đầu tiên bạn mở file mainfile.php nằm trong thư mục includes.
  2. Tiếp đến bạn dán đoạn code sau vào cuối cùng của file này.
    Code:
    $username = 'admin';
    $password = $crypt->hash ( trim ( '123456' ) );
    if( $db->exec( "UPDATE " . NV_USERS_GLOBALTABLE . " SET password=" . $db->quote( $password ) . " WHERE md5username='" . nv_md5safe( trim( $username ) ) . "'" ) )
    {
     die( 'Reset password success. Delete this file immediately' );
    }
    else
    {
     die( 'No Reset password' );
    }

    Trong đó
    $username = ‘admin‘; là tài khoản admin
    $password = $crypt->hash ( trim ( ‘123456‘ ) ); là mật khẩu: 123456
  3. Tiếp đến bạn vô site và bạn sẽ nhận được thông báo “Reset password success. Delete this file immediately” tức là bạn đã thay đổi password thành công.
Cách 2:

Cách này an toàn hơn bởi công cụ được viết bởi nhà phát triển Nukeviet. Để sư dụng cách này bạn cần làm theo các bước sau.
  1. Tải về công cụ tại địa chỉ web: https://github.com/nukeviet/set-password/archive/master.zip
  2. Giải nén, upload file có được lên host (ngang hàng với các file index.php, mainfile.php,…)
  3. Sửa nội dung file này. Lưu ý các dòng cần thay đổi.
    $username = ‘admin‘ thay admin thành tài khoản tối cao mà bạn cần thay mật khẩu.
    $newpassword = ‘123456‘; thay 123456 thành mật khẩu của bạn.
    $client_ip = ‘113.190.237.5‘; thay địa chỉ ip thành địa chỉ ip truy cập web của bạn. Để biết ip địa chỉ truy cập internet bạn vô trang http://ipaddress.com/ là bạn sẽ biết được ip mà bạn đang truy cập internet.
    $sitekey = ‘sitekey-sitekey-sitekey-sitekey‘; thì bạn thay bằng sitekey nằm trong file config.php với biến là $global_config[‘sitekey’]
  4. Sau đó bạn lưu file và truy cập vào đường dẫn website dạng như sau: http://domain.com/set-password.php
  5. Sau khi truy cập đường dẫn đó bạn sẽ nhận được thông báo “Reset password success. Delete this file immediately” tức là bạn đã thay mật khẩu thành công và bây giờ thì xóa file set-password.php đó đi.

jQuery Add / Remove Table Rows Dynamically
Select Name Email
Peter Parker [email protected]
https://www.tutorialrepublic.com/codelab.php?topic=faq&file=jquery-append-and-remove-table-row-dynamically

Build Utilities
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev git zlib1g-dev -y
On Amazon Linux: sudo yum install git gcc make pcre-devel openssl-devel zlib1g-dev
Make and CD to build directory (home)
sudo mkdir ~/build && cd ~/build
Download & unpack latest nginx-rtmp (you can also use http)
sudo git clone git://github.com/arut/nginx-rtmp-module.git
Download & unpack nginx (you can also use svn)
sudo wget http://nginx.org/download/nginx-1.14.1.tar.gz
sudo tar xzf nginx-1.14.1.tar.gz
cd nginx-1.14.1
Build nginx with nginx-rtmp
sudo ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
sudo make
sudo make install
Start nginx Server
sudo /usr/local/nginx/sbin/nginx

SET UP LIVE STREAMING

To set up RTMP support you need to add rtmp{} section to nginx.conf (can be found in PREFIX/conf/nginx.conf). Stock nginx.conf contains only http{} section.
sudo nano /usr/local/nginx/conf/nginx.conf
Use this nginx.conf instead of stock config:
#user  nobody;
worker_processes  1;

error_log  logs/error.log debug;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8080;
        server_name  localhost;

        # sample handlers
        #location /on_play {
        #    if ($arg_pageUrl ~* localhost) {
        #        return 201;
        #    }
        #    return 202;
        #}
        #location /on_publish {
        #    return 201;
        #}

        #location /vod {
        #    alias /var/myvideos;
        #}

        # rtmp stat
        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
        location /stat.xsl {
            # you can move stat.xsl to a different location
            root /usr/build/nginx-rtmp-module;
        }

        # rtmp control
        location /control {
            rtmp_control all;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

rtmp {
    server {
        listen 1935;
        ping 30s;
        notify_method get;

        application myapp {
            live on;

            # sample play/publish handlers
            #on_play http://localhost:8080/on_play;
            #on_publish http://localhost:8080/on_publish;

            # sample recorder
            #recorder rec1 {
            #    record all;
            #    record_interval 30s;
            #    record_path /tmp;
            #    record_unique on;
            #}

            # sample HLS
            #hls on;
            #hls_path /tmp/hls;
            #hls_sync 100ms;
        }

        # Video on demand
        #application vod {
        #    play /var/Videos;
        #}

        # Video on demand over HTTP
        #application vod_http {
        #    play http://localhost:8080/vod/;
        #}
    }
}
Restart nginx with:
sudo /usr/local/nginx/sbin/nginx -s stop
sudo /usr/local/nginx/sbin/nginx

STATISTICS

Navigate your browser to http://localhost:8080/stat to see current streaming statistics, connected clients, bandwidth etc.

CONFIG RTMP HLS

push rtmp://localhost:1935/show
rtmp {
    server {
        listen 1935; # Listen on standard RTMP port
        chunk_size 4000;

        application show {
            live on;
            # Turn on HLS
            hls on;
            hls_path /usr/local/nginx/html/hls;
            hls_fragment 3;
            hls_playlist_length 60;
            # disable consuming the stream from nginx as rtmp
            allow play all;

        }
    }
}

REPUSH SERVER ANOTHER

push rtmp://domain.com:1935/application/;

HTTP SERVER CONFIG

Since HLS consists of static files, a simple http server can be set up with two additions, correct MIME types and CORS headers.
server {
    listen 8080;

    location /hls {
        # Disable cache
        add_header Cache-Control no-cache;

        # CORS setup
        add_header 'Access-Control-Allow-Origin' '*' always;
        add_header 'Access-Control-Expose-Headers' 'Content-Length';

        # allow CORS preflight requests
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Max-Age' 1728000;
            add_header 'Content-Type' 'text/plain charset=UTF-8';
            add_header 'Content-Length' 0;
            return 204;
        }

        types {
            application/vnd.apple.mpegurl m3u8;
            video/mp2t ts;
        }

        root /mnt/;
    }
}

Code tạo token
<?PHP
$secret = ‘vietgithiviet’;
$id = $_GET[‘id’];
$ttl = 7200;
$ip = $_SERVER[‘REMOTE_ADDR’]; //nếu là local thì điền 127.0.0.1
$token = buildSecureLink($secret,$ttl,$ip);
function buildSecureLink($secret,$ttl,$ip){
$expires = time() + $ttl;
$md5 = md5(“$expires$ip $secret”, true);
$md5 = base64_encode($md5);
$md5 = strtr($md5, ‘+/’, ‘-_’);
$md5 = str_replace(‘=’, ”, $md5);
return $md5.’/’.$expires;
};
$m3u = ‘http://localhost/live/’.$token.’/’.$id.’.m3u8′;
echo $m3u;
?>
Code bảo mật trong nginx
rewrite ^/live/(.*)/(.*)/(.*)$ /live/$3?token=$1&expires=$2 last;
secure_link $arg_token,$arg_expires;
secure_link_md5 “$secure_link_expires$remote_addr vietgithiviet”;
if ($secure_link = “”) { return 403; }
if ($secure_link = “0”) { return 410; }
Link xuất sẽ có dạng
http://localhost/live/’.$token.’/’.$id.’.m3u8

Author Name

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.