مقاله خود را جستجو کنید

در این بخش میتوانید مقاله خود به صورت حرفه ای جستجو نماید.

آموزش ساخت اسکریپت کوتاه کننده لینک با PHP

 تاریخ انتشار : 19 مارس 2017    دسته بندی : پی اچ پی
کوتاه کننده لینک php و جی کوئری با آموزش اسکریپت کوتاه کننده لینک در خدمتتون هستیم . در این آموزش سعی شده با حداقل کدنویسی این اسکریپت رو تکمیل کنیم . - قراره با جی کوئری اطلاعاتمون رو سمت سرور ارسال کنید و بعد از برگشت به صفحه اصلی خطاها یا لینک ساخته شده رو میتونیم مشاهده کنیم . - قالب صفحه اول رو با بوت استرپ ساختم تا زیباتر به نظر برسه ،خودتون میتونید قالب رو زیباتر طراحی کنید . - برای اتصال به دیتابیس از PDO استفاده شده تا در عین سادگی امنیت ارسال اطلاعات رو تا حدودی ایمن کنیم . - برای اینکه یه سری لینک ها در سایت خودتون باز بشه میتونید از گزینه Iframe استفاده کنید . صفحه Index پروژه :
<!DOCTYPE html>
<html>
<head>
    <title>Short Url</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" >
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" >
    <script src="http://code.jquery.com/jquery-2.2.4.min.js" type="text/javascript"></script>

</head>
<body>

<div class="container">
    <div class="row">
        <br /><br />
        <div style="display: none; font: 12px tahoma; text-align: right;" class="alert alert-danger" role="alert"></div>
        <div style="display: none; font: 12px tahoma; text-align: right;" class="alert alert-success" role="alert"></div>
        <div style="text-align:center; display:none;" id="load"><img width="100" height="75" src="loading.gif" ></div>


        <div class="jumbotron">

            <div class="form-group">
                <label for="exampleInputEmail1">Url :</label>
                <input type="url" name="url" class="form-control" id="url" placeholder="Url">
            </div>
            <div class="form-group">
                <label for="exampleInputEmail1">Name :</label>
                <input type="text" name="name" class="form-control" id="name" placeholder="Name">
            </div>
            <div class="form-check">
                <label class="form-check-label">
                    <input name="hide" id="hide" class="form-check-input" type="checkbox">
                    Iframe
                </label>
            </div>
            <div class="form-group">
                <button id="submit" class="btn btn-success btn-block" > Submit </button>
            </div>
        </div>

        <div style="display:none; height: 180px; " id="show" class="jumbotron">
            <div class="col-lg-12">
                <div class="form-group">
                    <label for="exampleInputEmail1">Download :</label>
                    <input class="form-control" name="show" type="text" value="">
                </div>
                <h4><a href="" > مشاهده لینک </a></h4>
            </div>
        </div>

    </div>
</div>

<script type="text/javascript">

    jQuery(document).ready(function($) {

        $("#submit").click(function(event) {

            $('.alert-danger').hide();
            $('.alert-success').hide();
            var url = $('#url').val();
            var name = $('#name').val();

            if($("#hide").is(":checked"))
                var hide = '1';
            else
                var hide = '0';

            jQuery.ajax({
                url: 'http://192.168.0.1/Learn/short-url/function.php',
                type: 'POST',
                data: { url : url , name : name , hide : hide},
                success: function(data) {

                    if(data == 'empty'){
                        $('.alert-danger').show('slow');
                        $('.alert-danger').text(' هیچ آدرسی وارد نشده است ');
                    }else if(data == 'invalid'){
                        $('.alert-danger').show('slow');
                        $('.alert-danger').text(' آدرس را به صورت صحیح وارد نماید ');
                    }else if(data == "nameError"){
                        $('.alert-danger').show('slow');
                        $('.alert-danger').text(' فیلد نام تکراری است . از نام دیگری استفاده کنید ');
                    }else if(data.length > 0){
                        $('.alert-success').show('slow');
                        $('.alert-success').text(' با موفقیت ثبت شد ');
                        $('#show').show('slow');
                        $("#show a").attr('href', 'http://192.168.0.1/Learn/short-url/'+data);
                        $("#show input").attr('value', 'http://192.168.0.1/Learn/short-url/'+data);
                    }

                },
                error: function(xhr, textStatus, errorThrown) {
                    //called when there is an error
                }
            });
        });
    });

</script>
</body>
</html>
- در خط 73 ، 91 و 92 آدرس وب سایت خودتون رو وارد کنید . فایل Function :
<?php
    $url = clean($_REQUEST['url']);
    $name = clean($_REQUEST['name']);
    $hide = clean($_REQUEST['hide']);

    function clean($str) {
        $str = @trim($str);
        if(get_magic_quotes_gpc()) {
            $str = stripslashes($str);
        }
        return $str;
    }

    if(empty($url) && empty($name))
        echo "empty";
    elseif(filter_var($url, FILTER_VALIDATE_URL) === false)
        echo "invalid";
    else{
        $conn = new PDO('mysql:dbname=short-url;host=localhost', 'root', '123');
        //$conn->exec('set names utf8');
        $stmt = $conn->prepare("INSERT INTO urls (url , name , hide) VALUES (:url,:name,:hide)");
        $stmt->bindParam(':url', $url);
        $stmt->bindParam(':name', $name);
        $stmt->bindParam(':hide', $hide);
        $query = $stmt->execute();
        if($query == '1')
            echo $name;
        else
            echo "nameError";

    }
- در خط 19 باید اطلاعات دیتابیس رو وارد کنید . تمامی درخواست های صفحه اصلی به صفحه فانکشن ارجا داده میشه ... فایل redirect :
<?php
    function clean($str) {
        $str = @trim($str);
        if(get_magic_quotes_gpc()) {
            $str = stripslashes($str);
        }
        return $str;
    }

    $name = clean($_REQUEST['url']);
    if(isset($name)){
        $conn = new PDO('mysql:dbname=short-url;host=localhost', 'root', '4345086');
        $stmt = $conn->prepare("SELECT * FROM urls WHERE name = :name ORDER BY id DESC LIMIT 1" );
        $stmt->bindParam(':name', $name);
        $stmt->execute();
        $value = $stmt->fetchObject();
        if($stmt->rowCount() > 0){
            if($value->hide == '1'){
            ?>
                <body style="margin:0px;padding:0px;overflow:hidden">
                <iframe src="<?php echo $value->url ?>" frameborder="0" style="overflow:hidden;height:100%;width:100%" height="100%" width="100%"></iframe>
                </body>
            <?php
            }else{
                header("Location: ".$value->url);
                exit;
            }
        }else{
            echo "<div style='text-align: center; margin-top: 20px; font: bold 15px arial;'>چنین آدرسی وجود ندارد</div>";
        }
    }
- خط 12 -> اطلاعات دیتابیس . - این صفحه برای ریدایرکت کردن لینک ها می باشد . برای اینکه لینک قشنگ دیده بشه با استفاده از Htaccess آدرس رو این صورت در اوردیم (http://yourdomain.com/link) و اما اگر نخواهیم از htaccess استفاده کنیم آدرس به این صورت هست (http://yourdomain.com/redirect.php?url=link) . فایل htaccess :
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule   ^(.+)$   redirect.php?url=$1   [L]

دانلود پروژه کوتاه کننده لینک + دیتابیس

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *