13 'เจคเฉ เจฒเจฟเฉฐเจเจพเจ เจจเฉเฉฐ เจเฉเจเจพ เจเจฐเจจ เจตเจฟเฉฑเจ เจเฉเจ เจธเจผเจฐเจฎ เจจเจนเฉเจ เจนเฉ, เจ เฉเจ เจนเฉ? เจเฉฑเจ เจธเจผเฉเจฐเฉเจเจค เจเจฐเจจ เจตเจพเจฒเฉ, เจ เจคเฉ เจจเจพ เจธเจฟเจฐเจซเจผ เจเฉฑเจ เจธเจผเฉเจฐเฉเจเจค เจเจฐเจจ เจตเจพเจฒเฉ เจจเฉเฉฐ, เจเฉเจ เจจเจตเจพเจ เจซเจฐเฉเจฎเจตเจฐเจ เจธเจฟเฉฑเจเจฆเฉ เจนเฉเจ เจเจชเจฃเจพ เจฒเจฟเฉฐเจ เจเฉเจฎเจฐ เจฒเจฟเจเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจจเฉ เจเจพเจนเฉเจฆเฉ เจนเฉเฅค เจเฉ เจฎเฉเจ เจเฉเจคเจพเฅค เจฎเฉเจ เจเฉ เจเจนเจฟ เจธเจเจฆเจพ เจนเจพเจ - เจชเฉฐเจเจตเจพเจ เจฌเฉเจเจธเจเจฐเฉเจช, เจเฉฑเจ เจเฉฑเจ เจเจฐเจฌเฉ เจตเจพเจฒเจพ เจซเจฐเฉเจฎเจตเจฐเจ เจ เจคเฉ เจเจคเจฎเจพ เจฆเจพ เจเฉฑเจ เจเฉเจเฉเจพ.
เจเฉฑเจฅเฉ
เจซเจฐเฉเจฎเจตเจฐเจ, เจ เฉเจ เจนเฉ?
เจฌเฉเจธเจผเจ เจฒเจพเจฐเจตเฉเจฒ เจ
เจคเฉ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเฉ เจจเจนเฉเจ - เจ
เฉฑเจ เจ
เจธเฉเจ 65 เจเจฟเจฒเฉเจฌเจพเจเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจพเจเจเฉ
#ัะพััะธะฝะณ ะฒะพ ะคะปะฐัะบะต
@app.route('/')
def hello_world():
return 'Hello, World!'
//ัะพััะธะฝะณ ะฒ ะะฑะตะทะถะธัะตะฝะฝะพะผ
$f3->route('GET /',
function() {
echo 'Hello, world!';
}
);
เจ เฉเจ เจนเฉ, เจเจธ เจจเฉเฉฐ เจญเฉเฉฑเจฒ เจเจพเจ. เจกเจพเจเจจเจฒเฉเจก เจเจฐเฉ
เจเฉฑเจฅเฉ เจธเจญ เจเฉเจ เจฌเจนเฉเจค เจนเฉ เจธเจงเจพเจฐเจจ เจนเฉ - เจซเฉเจฒเจกเจฐ เจตเจฟเฉฑเจ ui เจธเจพเจกเฉ เจเฉเจฒ เจธเจพเจฐเฉ เจตเจฟเจฏเฉเจเจผ เจนเจจ, เจเจพเจ, เจเจธเจจเฉเฉฐ เจธเจงเจพเจฐเจจ เจฐเฉเจช เจตเจฟเฉฑเจ เจเจนเจฟเจฃ เจฒเจ, เจ เฉฑเจชเจเจฐเฉเจก เจเฉเจคเฉ HTML เจเฉเจเจชเจฒเฉเจ เจนเจจ เจเฉ เจ เจธเฉเจ เจเจชเจญเฉเจเจคเจพ เจจเฉเฉฐ เจฆเจฟเจเจพเจตเจพเจเจเฉ เจเจฆเฉเจ เจเจน เจเจฟเจธเฉ เจเจพเจธ URL เจคเฉฑเจ เจชเจนเฉเฉฐเจ เจเจฐเจฆเฉ เจนเจจเฅค
เจเฉฑเจฅเฉ เจธเจพเจกเฉ "เจเจชเจฒเฉเจเฉเจธเจผเจจ" เจฆเจพ เจชเจฟเฉฐเจเจฐ เจนเฉ:
<?php
//ะคะฐะนะป: index.php
// Kickstart the framework
$f3=require('lib/base.php');
$f3->set('DEBUG', 1);
if ((float)PCRE_VERSION<8.0)
trigger_error('PCRE version is out of date');
$f3->config('config.ini');
//ะะะกะฌ ะะกะขะะะฌะะะ ะะะ ะะฃะะะ ะะะกะะขะฌ ะะะะกะฌ
$f3->run();
เจธเจผเฉเจฐเฉเจเจค เจเจฐเจจ เจฒเจ เจคเฉเจนเจพเจจเฉเฉฐ เจฌเฉฑเจธ เจเจนเฉ เจเจพเจฃเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจเจ เจเฉเจกเจฟเฉฐเจ เจธเจผเฉเจฐเฉ เจเจฐเฉเจ!
[เจตเจฟเจเจพเจธ เจฒเจ เจฎเฉเจ เจธเจฅเจพเจจเจ เจตเจฐเจคเจฟเจเจฎเฉเฉฑเจ เจธเจซเจผเจพ
เจเจ เจฎเฉเฉฑเจ เจชเฉฐเจจเฉ เจจเจพเจฒ เจธเจผเฉเจฐเฉ เจเจฐเฉเจ. เจฒเจพเจเจผเฉเจเจฒ, เจธเฉฑเจเจพ?
//ะคะฐะนะป: index.php
$f3->route('GET /',
function($f3) { //ััะพะฑั ะธัะฟะพะปัะทะพะฒะฐัั ััะฝะบัะธะธ F3 ะฟะตัะตะดะฐะตะผ ะตะณะพ ะฒ ัะพัั
$view = new View; // ัะพะทะดะฐะตะผ ะฒัััะบั
echo $view->render('home.htm'); //ัะตะฝะดะตัะธะผ ัะฐะฑะปะพะฝ
}
);
เจนเฉเจฃ เจคเฉเจนเจพเจจเฉเฉฐ เจเจน เจฌเจนเฉเจค เจนเฉ เจเฉเจชเจฒเฉเจ เจฒเจฟเจเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉ. เจธเจพเจฆเจเฉ เจฒเจ เจฎเฉเจ เจตเจฐเจคเจฟเจ
เจซเฉเจฒเจกเจฐ เจตเจฟเฉฑเจ เจธเจพเจฐเฉ เจเฉเจเจชเจฒเฉเจ เจฌเจฃเจพเจเจฃเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ ui, เจจเจนเฉเจ เจคเจพเจ เจเจน เจจเจนเฉ เจเจฐเฉเจเจพ เจซเจฐเฉเจฎเจตเจฐเจ เจจเฉเฉฐ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ
<!-- ะคะฐะนะป: ui/home.htm -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="<?php echo $ENCODING; ?>" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>ะะธัะตะผ (ะบะพะด), ัะพะบัะฐัะฐะตะผ (ัััะปะบะธ)!</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css" integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I" crossorigin="anonymous">
</head>
<body class="text-center bg-dark text-light"> <!-- ัะตะผะฝะฐั ัะตะผะฐ ;) -->
<!-- ะผะตะฝััะบะฐ -->
<nav class="m-2">
<ul class="nav nav-pills justify-content-center">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">ะะปะฐะฒะฝะฐั</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ะกัะฐััั ะฝะฐ ะฅะฐะฑัะต</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://nikonovs.ru">ะกะพะทะดะฐัะตะปั</a>
</li>
</ul>
</nav>
<div class="container">
<h1>ะะพัะพัะบะธะต ัััะปะบะธ ัะถะต ะทะดะตัั.</h1>
<!-- ะัะดะตะผ ะพัะฟัะฐะฒะปััั ะดะฐะฝะฝัะต POST-ะทะฐะฟัะพัะพะผ ะฝะฐ /newLink -->
<form class="mt-5 mb-3" action="/pa/newLink/" method="POST">
<div class="row justify-content-center">
<div class="col-auto">
<label for="inputLink" class="col-form-label">ะะฒะตะดะธ ัััะปะบั:</label>
</div>
<div class="col-auto">
<input required placeholder="https://" type="url" name="link" id="inputLink" class="form-control mb-1" aria-describedby="inputLink">
</div>
<div class="col-auto">
<button type="submit" class="btn btn-outline-primary">ะกะพะบัะฐัะธัั!</button>
</div>
</div>
</form>
<!-- ะฝะตะผะฝะพะณะพ -->
<p class="text-left m-auto mb-5" style="max-width: 30rem;">Lorem ipsum dolor sit, amet consectetur adipisicing elit. Omnis illum molestiae hic fugiat molestias nemo, architecto beatae repellat ullam exercitationem non ab, necessitatibus maxime quod iure ipsa quam quos! Reprehenderit. Lorem ipsum dolor, sit amet consectetur adipisicing elit. Necessitatibus eos sapiente voluptates veniam sequi delectus totam tenetur praesentium obcaecati. Repudiandae quisquam, ipsa ullam corrupti molestiae minima optio nihil est modi?</p>
<footer class="m-2">ะกะดะตะปะฐะฝะพ ั <img width="20" height="20" src="https://image.flaticon.com/icons/svg/833/833472.svg" alt="ะปัะฑะพะฒัั">, <a href="https://v5.getbootstrap.com/">ะฟัััะผ Bootstrap'ะพะผ</a> ะธ <a href="https://fatfreeframework.com/">ะฑะตะท ะถะธัะฐ</a></footer>
</div>
</body>
</html>
เจฌเฉฑเจธ, เจธเจพเจกเจพ เจฎเฉเฉฑเจ เจชเฉฐเจจเจพ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเฉฐเจฎ เจเจฐ เจฐเจฟเจนเจพ เจนเฉเฅค เจซเจพเจฐเจฎ เจเฉฑเจ เจฒเจฟเฉฐเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ POST เจฌเฉเจจเจคเฉ เจญเฉเจเจฆเจพ เจนเฉ เจเจฟเจธเจจเฉเฉฐ เจเฉเจเจพ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค
เจนเฉเจฃ เจฎเจเจผเฉเจฆเจพเจฐ เจนเจฟเฉฑเจธเจพ เจเจเจเจฆเจพ เจนเฉ (เจจเจนเฉเจ).
เจกเจพเจเจพเจฌเฉเจธ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจเจพ
เจเจ เจเฉฑเจ เจกเฉเจเจพเจฌเฉเจธ เจฌเจฃเจพเจ - MySQL. เจเฉเจเจฐ เจคเฉเจนเจพเจกเฉ เจเฉเจฒ PhpMyAdmin เจเฉฐเจธเจเจพเจฒ เจนเฉ, เจคเจพเจ เจเฉฑเจ เจจเจตเจพเจ เจกเจพเจเจพเจฌเฉเจธ เจฌเจฃเจพเจ "เจฒเจฟเฉฐเจเจฐเจ เจคเฉ เจซเจฟเจฐ เจเจธ SQL เจเจฒเจพเจ:
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
CREATE TABLE IF NOT EXISTS `links` (
`code` varchar(4) NOT NULL,
`link` varchar(1000) NOT NULL,
`hits` int(255) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `links`
ADD UNIQUE KEY `code` (`code`);
เจธเจพเจกเฉ เจเฉเจฒ เจนเจฐเฉเจ เจฒเจฟเฉฐเจ เจฒเจ 3 เจเฉเจคเจฐ เจนเฉเจฃเจเฉ:
- เจเฉเจก เจกเฉเจฎเฉเจจ เจฆเฉ เจฌเจพเจ เจฆ เจเฉฑเจ เจฌเฉเจคเจฐเจคเฉเจฌ 4 เจ เฉฑเจเจฐ เจนเฉ เจเจฟเจธ เจฆเฉเจเจฐเจพ เจฐเฉเจกเจพเจเจฐเฉเจเจธเจผเจจ เจนเฉเจตเฉเจเจพ, เจเจฟเจตเฉเจ เจเจฟ example.com/ABC1
- เจฒเจฟเฉฐเจ - เจเฉเจเจพ เจจเจนเฉเจ เจเฉเจคเจพ เจฒเจฟเฉฐเจ.
- เจนเจฟเฉฑเจ - เจเฉเจเฉ เจเฉเจคเฉ เจฒเจฟเฉฐเจ 'เจคเฉ เจเจฒเจฟเฉฑเจเจพเจ เจฆเฉ เจเจฟเจฃเจคเฉเฅค
เจฎเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเจฐเจฌเฉ เจฆเฉ เจฌเจฟเจจเจพเจ, เจเฉฑเจ เจกเฉเจเจพเจฌเฉเจธ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฆเฉ เจธเจฟเจงเจพเจเจค เจฌเจพเจฐเฉ เจธเฉฐเจเฉเจช เจตเจฟเฉฑเจ เจฆเฉฑเจธเจพเจเจเจพเฅค
<?php
//ัะฝะฐัะฐะปะฐ ะฝัะถะฝะพ ะฟะพะดะบะปััะธัััั ะบ ะะ
$db = new DBSQL(
'mysql:host=localhost;port=3306;dbname=linker',
'root',
''
);
//ะะฐะปััะต ะตััั ะดะฒะฐ ะฒะฐัะธะฐะฝะดะฐ ัะฐะฑะพัั ั ะดะฐะฝะฝัะผะธ:
//ะะพะถะฝะพ ัััะฐะฝะพะฒะธัั ะฟะตัะตะผะตะฝะฝัั ะฒ ะคัะตะนะผะฒะพัะบ c ะฟะพะผะพััั ะพะฑััะฝะพะณะพ SQL-ะทะฐะฟัะพัะฐ:
$f3->set('result', $db->exec('SELECT * FROM wherever'));
//ะพะฝะธ ะฑัะดัั ะดะพัััะฟะฝั ะฒ ัะฐะฑะปะพะฝะฐั
, ะบะฐะบ <?= $resul ? >
//ะ ะผะพะถะฝะพ ะธัะฟะพะปัะทะพะฒะฐัั ะฒัััะพะตะฝะฝัะน SQL Mapper:
$row = new DBSQLMapper($db, 'links');
$row->load(array('link="https://habrahabr.ru"')); //ัะตะฟะตัั ะธะท ััะพะณะพ ะพะฑัะตะบัะฐ ะดะพัััะฟะฝั ะฒัะต ะบะพะปะพะฝะบะธ ัััะพะบะธ, ะณะดะต ัััะปะบะฐ ะฝะฐ ะฅะฐะฑั:
$row_value = $row->somerow; //ะะพั ัะฐะบ
// ะััะตัััะฒะตะฝะฝะพ ะผะพะถะฝะพ ะธะทะผะตะฝััั ะทะฝะฐัะตะฝะธั:
$row->link = 'https://habr.com';
$row->save(); //ะธะทะผะตะฝะตะฝะธั ะฝัะถะฝะพ ัะพั
ัะฐะฝะธัั, ะฐ ััะพ ะฒั ะดัะผะฐะปะธ
// ะฑะพะปััะต ะธะฝัะพัะผะฐัะธะธ ะฟะพ ัะฐะฑะพัะต ั ะะ ะดะพัััะฟะฝะพ ะทะดะตัั: https://a.nikonovs.ru/MPHR ะะฐััะพััะตะปัะฝะพ ัะตะบะพะผะตะฝะดัั ะฟัะพัะธัะฐัั, ั
ะพััะฑั ั ะฟะพะผะพััั ะฟะตัะตะฒะพะดัะธะบะฐ, ะฒัััะพะตะฝะฝะพะณะพ ะฒ ะฑัะฐัะทะตั.
?>
เจเจ เจเฉเจเจพ เจเจฐเจจเจพ เจธเจผเฉเจฐเฉ เจเจฐเฉเจ.
เจเฉฑเจ เจจเจตเฉเจ เจฒเจฟเฉฐเจ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเฉเจคเฉ เจเจพ เจฐเจนเฉ เจนเฉ
เจตเจฟเฉฑเจ เจเฉฑเจ เจจเจตเจพเจ เจฆเฉเจฐเจฟเจธเจผ เจฌเจฃเจพเจ เจธเฉเจเจเจพเจเจ, เจเฉ เจฎเฉเฉฑเจ เจชเฉฐเจจเฉ 'เจคเฉ เจซเจพเจฐเจฎ เจคเฉเจ เจฌเฉเจจเจคเฉ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเฉเจเจพเฅค
เจชเจนเจฟเจฒเจพเจ, เจเจ เจเฉฑเจ เจจเจตเจพเจ เจฌเจฃเจพเจ, เจชเจฐ เจชเจนเจฟเจฒเฉ (home.htm) เจเฉเจเจชเจฒเฉเจ เจฆเฉ เจธเจฎเจพเจจ - "newLink.htm".
เจเฉฑเจฅเฉ เจ
เจธเฉเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเฉเจเจพ เจเฉเจคเจพ เจฒเจฟเฉฐเจ เจ
เจคเฉ เจเจธ 'เจคเฉ เจเจฒเจฟเฉฑเจเจพเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจฆเจฟเจเจพเจตเจพเจเจเฉ (เจเจนเจจเจพเจ "เจ
เฉฐเจเฉเฉ" เจจเฉเฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฆเฉเจเจฃ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเจธเฉ เจฒเจฟเฉฐเจ เจจเฉเฉฐ เจฆเฉเจฌเจพเจฐเจพ เจเฉเจเจพ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ - เจชเจคเจพ เจเจนเฉ เจฐเจนเฉเจเจพ)เฅค
เจเจเจเจชเฉเฉฑเจ เจคเจฟเจเจฐ เจเจฐเจจ เจฒเจ, เจ
เจธเฉเจ "เจตเฉเจฐเฉเจเจฌเจฒ เจชเจพเจธเจฟเฉฐเจ" เจเฉเจฐเจฟเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจพเจเจเฉ:
<?php
//ะคะฐะนะป: ะฝะตั (ะฟัะธะผะตั)
//ัััะฐะฝะฐะฒะปะธะฒะฐะตะผ ะฟะตัะตะผะตะฝะฝัั ะฒ index'ะต ะธ ัะตะฝะดะตัะธะผ ัะฐะฑะปะพะฝ
$f3->set('link', $shorted_link);
$view = new View;
echo $view->render('newLink.htm');
//ัะตะฟะตัั ะฒ ัะฐะฑะปะพะฝะต ะผะพะถะฝะพ ะธัะฟะพะปัะทะพะฒะฐัั:
<?= $link ?>
เจ เจคเฉ เจเฉฑเจฅเฉ เจธเฉเจเฉ เจนเฉ newLink.html:
<!-- ะคะฐะนะป: newLink.htm -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="<?php echo $ENCODING; ?>" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>ะะธัะตะผ (ะบะพะด), ัะพะบัะฐัะฐะตะผ (ัััะปะบะธ)!</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css" integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I" crossorigin="anonymous">
</head>
<body class="text-center bg-dark text-light">
<nav class="m-2">
<ul class="nav nav-pills justify-content-center">
<li class="nav-item">
<a class="nav-link" aria-current="page" href="/pa/">ะะปะฐะฒะฝะฐั</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">ะกัะฐััั ะฝะฐ ะฅะฐะฑัะต</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://nikonovs.ru">ะกะพะทะดะฐัะตะปั</a>
</li>
</ul>
</nav>
<div class="container">
<h1>ะะพัะพัะบะธะต ัััะปะบะธ ัะถะต ะทะดะตัั.</h1>
<!-- ะฃะฑะธัะฐะตะผ ะธะท ัะพัะผั ััะฝะบัะธะพะฝะฐะป ัะพัะผั ะธ ะฒัะฒะพะดะธะผ ะฟะตัะตะผะตะฝะฝัะต -->
<form class="mt-5 mb-3">
<div class="row justify-content-center">
<div class="col-auto">
<label for="inputLink" class="col-form-label">ะกะพะบัะฐัะธะปะธ:</label>
</div>
<div class="col-auto">
<input disabled required type="url" name="link" id="inputLink" class="form-control disabled" aria-describedby="inputLink" value="<?= $link ?>">
</div>
</div>
<p class="m-2 text-secondary">ะะพ ััะพะน ัััะปะบะต ะฟะตัะตัะปะธ: `<?= $hits ?>`</p>
</form>
<a href="/pa/" class="mt-3 mb-5 btn btn-primary btn-lg">ะะะ ะะฃะขะฌะกะฏ ะะ ะะะะะะฃะฎ</a>
<footer class="m-2">ะกะดะตะปะฐะฝะพ ั <img width="20" height="20" src="https://image.flaticon.com/icons/svg/833/833472.svg" alt="ะปัะฑะพะฒัั">, <a href="https://v5.getbootstrap.com/">ะฟัััะผ Bootstrap'ะพะผ</a> ะธ <a href="https://fatfreeframework.com/">ะฑะตะท ะถะธัะฐ</a></footer>
</div>
</body>
</html>
เจ เจธเฉเจ เจฐเจธเจคเจพ เจเจช เจนเฉ เจฒเจฟเจเจฆเฉ เจนเจพเจเฅค
$f3->route('GET|POST /newLink', //ะผั ะฑัะดะตะผ ะพะฑัะฐะฑะฐััะฒะฐัั ะธ POST ะธ GET
function($f3) {
$db = new DBSQL( //ะะพะดะบะปััะตะฝะธะต ะบ ะะ ะฝะพะฒะพะต ะฒ ะบะฐะถะดะพะผ ะ ะพััะต
'mysql:host=localhost;port=3306;dbname=linker',
'root',
''
);
//ะฟัะตะบัะฐัะฝะฐั ััะฝะบัะธั ะณะตะฝะตัะฐัะธะธ ัะฐะดะพะผะฝัั
ัะธะผะฒะพะปะพะฒ:
$permitted_chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
function generate_string($input, $strength = 4) {
$input_length = strlen($input);
$random_string = '';
for($i = 0; $i < $strength; $i++) {
$random_character = $input[mt_rand(0, $input_length - 1)];
$random_string .= $random_character;
}
return $random_string;
}
//ะฟัะพะฒะตัะบะฐ ะฝะฐ ะฟะพะฒัะพัะตะฝะธะต link - ะฝะฐะผ ะถะต ะฝะต ะฝัะถะฝะพ ััะพะฑั ะบะฐะถะดัะน ัะฐะท ะณะตะฝะตัะธัะพะฒะฐะปะธัั ะฝะพะฒัะต ัััะปะบะธ. link - ัะฝะธะบะฐะปัะฝัะน.
$check = new DBSQLMapper($db,'links');
$check->load(array('link="'. $link .'"'));
if ($check->dry()) {
$g_code = generate_string($permitted_chars);
$row = new DBSQLMapper($db,'links');
$row->reset();
$row->code = $g_code;
$row->link = $link;
$row->save();
} else {
$g_code = $check->code; //ะตัะปะธ link ะฟะพะฒัะพััะตััั, ัะพ ะฟะพะบะฐะทัะฒะฐะตะผ ััะฐััะน ะบะพะด
}
$short_link = 'https://'. $_SERVER['HTTP_HOST'] . '/' . $g_code; //ัะพะฑะธัะฐะตะผ ะบะพะฝะตัะฝัั ัััะปะบั
//ะฟะฐัะฐะผะตััั ะธะท $_POST ะผะพะถะฝะพ ะฟะพะปััะธัั ั ะฟะพะผะพััั $f3->get('POST'), ะฟะพะดะดะตัะถะธะฒะฐะตััั ัะพัะตัะฝะฐั ะฝะพัะฐัะธั (ะฟะพะฟัะฐะฒััะต, ะตัะปะธ ะฝะตะฟัะฐะฒะธะปัะฝะพ ะฝะฐะทัะฒะฐั): ะฟะฐัะฐะผะตัั "link" ะผะพะถะฝะพ ะฟะพะปััะธัั ัะฐะบ:
$link = $f3->get('POST.link');
if ( !empty($f3->get('POST')) ) { //ะัะดะฐะตะผ HTML, ัะพะปัะบะพ ะตัะปะธ POST ะฝะต ะฟัััะพะน.
$f3->set('link', $short_link);
$f3->set('hits', $check->hits);
$view = new View;
echo $view->render('newLink.htm');
} else { //ะธะฝะฐัะต - ัะตะดะธัะตะบั ะฝะฐ ะณะปะฐะฒะฝัั
$f3->$f3->reroute('/');
}
}
);
เจคเจฟเจเจฐ! เจ เจธเจฒ เจตเจฟเฉฑเจ, เจเจน เจธเจงเจพเจฐเจจ เจธเฉ.
เจฐเฉเจกเจพเจเจฐเฉเจเจ
เจเฉฑเจฅเฉ เจเจฐเจจ เจฒเจ เจฅเฉเฉเจพ เจเจฟเจนเจพ เจฌเจเจฟเจ เจนเฉ:
- URL เจคเฉเจ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจชเฉเจฐเจพเจชเจค เจเจฐเฉ
- เจกเฉเจเจพเจฌเฉเจธ เจตเจฟเฉฑเจ เจเจธเจฆเฉ เจฎเฉเจเฉเจฆเจเฉ เจฆเฉ เจเจพเจเจ เจเจฐเฉ
- เจกเฉเจเจพเจฌเฉเจธ เจคเฉเจ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจฒเจฟเฉฐเจ เจชเฉเจฐเจพเจชเจค เจเจฐเฉ
- เจเจชเจญเฉเจเจคเจพ เจจเฉเฉฐ เจฐเฉเจกเจพเจเจฐเฉเจเจ เจเจฐเฉ
- เจฒเจพเจญ!
เจ เจธเฉเจ เจเจเจฐเฉ เจฐเฉเจ เจคเฉเจ เจฌเจพเจ เจฆ เจเฉเจก เจฒเจฟเจเจฃเจพ เจเจพเจฐเฉ เจฐเฉฑเจเจฆเฉ เจนเจพเจเฅค
$f3->route('GET /@code', //ัะบะฐะทัะฒะฐะตะผ ะฟะฐัะฐะผะตัั ะฟะพัะปะต "@", ะพะฝ ะฟะพะฟะฐะดะตั ะฒ PARAMS
function($f3) {
//ัะฝะพะฒะฐ ะพะฟัะตะดะตะปัะตะผ $db
$db = new DBSQL(
'mysql:host=localhost;port=3306;dbname=linker',
'root',
''
);
$code = $f3->get('PARAMS.code'); //ะฟะพะปััะฐะตะผ ะฟะฐัะฐะผะตัั
$link = new DBSQLMapper($db,'links');
//ะตัะปะธ ะฟะพะปััะฐะตััั ะฟะพะปััะธัั ัััะปะบั ะธะท ะะ - ะฟะพะปััะฐะตะผ, ัะฒะตะปะธัะธะฒะฐะตะผ ะบะพะปะธัะตััะฒะพ ะฟะตัะตั
ะพะดะพะฒ ะธ ะฟะตัะตะฝะฐะฟัะฐะฒะปัะตะผ
if ($link->load(array('code="'.$code.'"', 'link=?'))) {
$link->hits++;
$link->save();
$f3->reroute($link->link);
} else {
$f3->reroute('/'); //ะฐ ะตัะปะธ ัะฐะบะพะน ัััะปะบะธ ะฝะตั - ะผะธะปะพััะธ ะฟัะพัะธะผ ะฝะฐ ะณะปะฐะฒะฝัั
}
}
);
เจนเฉ เจธเจเจฆเจพ เจนเฉ เจเจฟ เจคเฉเจธเฉเจ เจฐเฉเจ เจตเจฟเฉฑเจ เจ
เจคเฉ เจตเจฟเฉฑเจ เจฆเฉเจเจฟเจ เจนเฉเจตเฉเจเจพ เจจเจตเจพเจ เจฒเจฟเฉฐเจ, เจ
เจคเฉ เจเจชเจฐเฉเจเจค เจฐเฉเจ เจตเจฟเฉฑเจ เจเจนเฉ เจเฉเจเจผ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเฉเจคเฉ เจเจพเจตเฉเจเฉ - เจเจเจฐเจเจพเจฐ
$f3โเจฐเจจ()!
เจชเฉเฉเจนเจจ เจฒเจ เจงเฉฐเจจเจตเจพเจฆ!
เจฎเฉเจจเฉเฉฐ เจเฉเจธเจผเฉ เจนเฉเจตเฉเจเฉ เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเฉเจ เจเจฟเฉฑเจชเจฃเฉ เจฒเจฟเจเฉ เจ
เจคเฉ เจเฉ เจเฉเจ เจเจฒเจค เจนเฉ เจคเจพเจ เจฎเฉเจจเฉเฉฐ เจ เฉเจ เจเจฐเฉเฅค
เจ เจคเฉ เจนเฉเจฎเจตเจฐเจ เจเจพเจ เจฒเฉเจเจ (เจฎเฉเจฐเฉ) เจฆเฉ เจเจฒเจธ เจฆเฉ เจธเจฌเฉเจค เจตเจเฉเจ, เจฎเฉเจ เจเฉ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ เจฆเฉ เจเฉฑเจ เจธเฉเจเฉ เจเฉฑเจกเจฆเจพ เจนเจพเจ. เจเจฐ เจเฉ เจธเจฟเฉฑเจเจฃเจพ เจฌเจฟเจนเจคเจฐ เจนเฉ!
- เจเจน เจฌเฉเจธเจผเฉฑเจ เจ เจธเฉฐเจญเจต เจนเฉ, เจชเจฐ เจเจฆเฉเจ เจชเฉเจฆเจพ เจนเฉเฉฐเจฆเจพ เจนเฉ $g_code เจฆเฉเจฌเจพเจฐเจพ เจนเฉ เจธเจเจฆเจพ เจนเฉ, เจเจธ เจฒเจ เจฎเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจซเฉฐเจเจธเจผเจจ เจฒเจฟเจเจฃ เจฆเจพ เจธเฉเจเจพเจ เจฆเจฟเฉฐเจฆเจพ เจนเจพเจ เจเฉ เจเจธเจฆเฉ เจเจพเจเจ เจเจฐเฉเจเจพเฅค
- เจคเฉเจธเฉเจ เจเจฎ เจ เฉฐเจเฉเฉ เจตเฉ เจฌเจฃเจพ เจธเจเจฆเฉ เจนเฉ เจ เจคเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจฌเจฆเจฒเจฃ เจคเฉเจ เจฌเจพเจ เจฆ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเจฐ เจธเจเจฆเฉ เจนเฉ /@เจเฉเจก/เจ เฉฐเจเฉเฉ
- เจฒเจฟเฉฐเจ เจธเจผเจพเจฐเจเจจเจฟเฉฐเจ เจธเฉเจตเจพ เจฒเจ เจฒเจฟเฉฐเจ เจฌเจฃเจพเจเจฃ 'เจคเฉ เจชเจพเจฌเฉฐเจฆเฉ เจฒเจเจพเจ, เจธเจฐเฉเจคเจพเจ เจฆเฉ เจเฉฑเจ เจธเฉเจเฉ เจฌเจฃเจพเจ "เจธเฉเจฐเฉฑเจเจฟเจ เจค" เจจเฉเฉฐ เจเฉเจเจพ เจเจฐเจจ เจคเฉเจ
-
เจฎเฉเจ เจเจผเฉเจฐเจฆเจพเจฐ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจเจฐเจฆเจพ เจนเจพเจ เจเจฟ เจ เจเจฟเจนเฉ เจเฉฑเจ เจเฉเจเฉ เจเจฟเจนเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ เจตเฉ, เจคเฉเจธเฉเจ เจธเจฐเจตเจฐ เจธเจพเจเจก 'เจคเฉ เจเจจเจชเฉเจ เจชเฉเจฐเจฎเจพเจฃเจฟเจเจคเจพ เจเจฐเจฆเฉ เจนเฉ, เจธเฉฐเจฌเฉฐเจงเจฟเจค เจคเจฐเฉเฉฑเจเฉเจเจ เจฆเฉ เจจเจพเจฒ, เจคเฉเจนเจพเจจเฉเฉฐ เจเจจเจชเฉเจ เจเฉเจคเจฐ เจตเจฟเฉฑเจ เจฒเฉเฉเฉเจเจฆเฉ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจ เจคเฉ เจเจพเจเจช = "url" เจจเฉเฉฐ เจเฉเฉเจจ 'เจคเฉ เจญเจฐเฉเจธเจพ เจจเจนเฉเจ เจเจฐเจจเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค
เจฐเฉเฉฑเจก เจเจพเจฎเจฐเฉเจก -
เจเจฟเฉฑเจชเจฃเฉเจเจ เจตเจฟเฉฑเจ เจธเฉเจเจพเจ เจฆเจฟเจ ...
เจธเฉฐเจชเจฐเจ 'เจ)
เจธเจฐเฉเจค: www.habr.com