13-เตฝ เดฒเดฟเดเตเดเตเดเตพ เดเตเดฐเตเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดฒเดเตเดเดฏเดฟเดฒเตเดฒ, เด เดฒเตเดฒเต? เดเดฐเต เดคเตเดเดเตเดเดเตเดเดพเดฐเตป, เดเดฐเต เดคเตเดเดเตเดเดเตเดเดพเดฐเตป เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดเดฟเดฒ เดชเตเดคเดฟเดฏ เดเดเตเดเดเตเดเตเดเตเดเตพ เดชเด เดฟเดเตเดเตเดฎเตเดชเตเตพ เดธเตเดตเดจเตเดคเด เดฒเดฟเดเตเดเต เดเดพเดฎเตผ เดเดดเตเดคเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดฃเด. เดเดคเดพเดฃเต เดเดพเตป เดเตเดฏเตเดคเดคเต. เดเดจเดฟเดเตเดเต เดเดจเตเดคเต เดชเดฑเดฏเดพเตป เดเดดเดฟเดฏเตเด - เด เดเตเดเดพเดฎเดคเตเดคเต เดฌเตเดเตเดเตเดธเตเดเตเดฐเดพเดชเตเดชเต, เดเตเดดเตเดชเตเดชเต เดเตเดฑเดเตเด เดเดเตเดเดเตเดเตเดเต, เดเดคเตเดฎเดพเดตเดฟเดจเตเดฑเต เดเดฐเต เดญเดพเดเด.
เดเดตเดฟเดเต
เดเดเตเดเดเตเดเตเดเต, เด เดฒเตเดฒเต?
เดคเตเตผเดเตเดเดฏเดพเดฏเตเด เดฒเดพเดฑเดตเตเดฒเตเด เดฎเดฑเตเดฑเตเด เด
เดฒเตเดฒ - เดเดจเตเดจเต เดเดเตเดเตพ 65 เดเดฟเดฒเตเดฌเตเดฑเตเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเดฏเตเดฏเตเด
#ัะพััะธะฝะณ ะฒะพ ะคะปะฐัะบะต
@app.route('/')
def hello_world():
return 'Hello, World!'
//ัะพััะธะฝะณ ะฒ ะะฑะตะทะถะธัะตะฝะฝะพะผ
$f3->route('GET /',
function() {
echo 'Hello, world!';
}
);
เดถเดฐเดฟ, เดฎเดฑเดเตเดเตเด. เดกเตเตบเดฒเตเดพเดกเต
เดเดตเดฟเดเต เดเดฒเตเดฒเดพเด เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฃเต - เดซเตเตพเดกเดฑเดฟเตฝ ui เดเดเตเดเตพเดเตเดเต เดเดฒเตเดฒเดพ เดเดพเดดเตโเดเดเดณเตเด เดเดฃเตเดเต, เด เดฒเตเดฒเตเดเตเดเดฟเตฝ, เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดชเดฑเดเตเดเดพเตฝ, เดเดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด URL เดธเดจเตเดฆเตผเดถเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดเดเตเดเตพ เดเดพเดฃเดฟเดเตเดเตเดจเตเดจ เดจเดตเตเดเดฐเดฟเดเตเด HTML เดเตเดเดชเตเดฒเตเดฑเตเดฑเตเดเตพ.
เดเดเตเดเดณเตเดเต "เด เดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดฑเต" เด เดธเตเดฅเดฟเดเตเดเด เดเดคเดพ:
<?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="/ml/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 ะะฐััะพััะตะปัะฝะพ ัะตะบะพะผะตะฝะดัั ะฟัะพัะธัะฐัั, ั
ะพััะฑั ั ะฟะพะผะพััั ะฟะตัะตะฒะพะดัะธะบะฐ, ะฒัััะพะตะฝะฝะพะณะพ ะฒ ะฑัะฐัะทะตั.
?>
เดเตเดฐเตเดเตเดเดฟ เดคเตเดเดเตเดเดพเด.
เดเดฐเต เดชเตเดคเดฟเดฏ เดฒเดฟเดเตเดเต เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเต
เดเดฐเต เดชเตเดคเดฟเดฏ เดเดพเดดเตเด เดธเตเดทเตเดเดฟเดเตเดเตเด เดธเตเดเดฟเด, เดเดคเต เดชเตเดฐเดงเดพเดจ เดชเตเดเดฟเดฒเต เดซเตเดฎเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด เดญเตเดฏเตผเดคเตเดฅเดจ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเด.
เดเดฆเตเดฏเด, เดจเดฎเตเดเตเดเต เดชเตเดคเดฟเดฏเดคเตเด เดเดจเตเดจเดพเตฝ เดเดฆเตเดฏเดคเตเดคเต (hm.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="/ml/">ะะปะฐะฒะฝะฐั</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="/ml/" 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โrun()!
เดตเดพเดฏเดฟเดเตเดเดคเดฟเดจเต เดจเดจเตเดฆเดฟ!
เดจเดฟเดเตเดเตพ เดเดฐเต เด
เดญเดฟเดชเตเดฐเดพเดฏเด เดเดดเตเดคเตเดเดฏเตเด เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดคเตเดฑเตเดฑเตเดฃเตเดเตเดเตเดเดฟเตฝ เดเดจเตเดจเต เดคเดฟเดฐเตเดคเตเดคเตเดเดฏเตเด เดเตเดฏเตเดคเดพเตฝ เดเดพเตป เดธเดจเตเดคเตเดทเดฟเดเตเดเตเด.
เดเตเดเดพเดคเต เดเตเดนเดชเดพเด เด เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดฐเดเดฏเดฟเดคเดพเดตเดฟเดจเตเดฑเต (เดเดพเตป) เด เดฒเดธเดคเดฏเตเดเต เดคเตเดณเดฟเดตเดพเดฏเดฟ, เดเดจเตเดคเตเดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเดฎเตเดจเตเดจเดคเดฟเดจเตเดฑเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดเดพเตป เดเดชเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต. เดเตเดฏเตเดคเตเดเตเดฃเตเดเต เดชเด เดฟเดเตเดเตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต!
- เดเดคเต เดคเตเตผเดเตเดเดฏเดพเดฏเตเด เดธเดพเดงเตเดฏเดคเดฏเดฟเดฒเตเดฒ, เดชเดเตเดทเต เดธเตเดทเตเดเดฟเดเตเดเตเดฎเตเดชเตเตพ $g_code เดตเตเดฃเตเดเตเด เดธเดเดญเดตเดฟเดเตเดเดพเด, เด เดคเดฟเดจเดพเตฝ เดเดคเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดซเดเดเตโเดทเตป เดเดดเตเดคเดพเตป เดเดพเตป เดจเดฟเตผเดฆเตเดฆเตเดถเดฟเดเตเดเตเดจเตเดจเต.
- เดจเดฟเดเตเดเตพเดเตเดเต เดธเดพเดงเดพเดฐเดฃ เดธเตเดฅเดฟเดคเดฟเดตเดฟเดตเดฐเดเตเดเดฃเดเตเดเตเดเตพ เดเดฃเตเดเดพเดเตเดเดพเดจเตเด เด เดคเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเดฟเดฏเดคเดฟเดจเตเดถเตเดทเด เด เดต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเด เดเดดเดฟเดฏเตเด /@เดเตเดกเต/ เดธเตเดฅเดฟเดคเดฟเดตเดฟเดตเดฐเดเตเดเดฃเดเตเดเตเดเตพ
- เดฒเดฟเดเตเดเต เดทเตเตผเดเตเดเต เดเตเดฏเตเดฏเตฝ เดธเตเดตเดจเดคเตเดคเดฟเดฒเตเดเตเดเต เดคเดจเตเดจเต เดฒเดฟเดเตเดเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดจเดฟเดฐเตเดงเดฟเดเตเดเตเด, เดเตเดฐเตเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต โเดธเดเดฐเดเตเดทเดฟเดเตเดโ เดตเดฟเดญเดตเดเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดธเตเดทเตเดเดฟเดเตเดเตเด
-
เดเดคเตเดฐเดฏเตเด เดเตเดฑเดฟเดฏ เดเดพเดฐเตเดฏเดเตเดเดณเดฟเตฝ เดชเตเดฒเตเด, เดจเดฟเดเตเดเตพ เดธเตเตผเดตเตผ เดตเดถเดคเตเดคเต เดเตปเดชเตเดเตเดเต เดฎเตเดฒเตเดฏเดจเดฟเตผเดฃเตเดฃเดฏเด เดจเดเดคเตเดคเดฃเดฎเตเดจเตเดจเต เดเดพเตป เดถเดเตเดคเดฎเดพเดฏเดฟ เดถเตเดชเดพเตผเดถ เดเตเดฏเตเดฏเตเดจเตเดจเต, เด เดจเตเดฌเดจเตเดง เดชเดฟเดถเดเตเดเตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเดเตเดฃเตเดเต, เดเตปเดชเตเดเตเดเต เดซเตเตฝเดกเดฟเดฒเตเดเตเดเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดเตเดฐเดฟเดฌเตเดฏเตเดเตเดเต เดเตเตผเดคเตเดคเต = "url" เดเดจเตเดจเต เดเตเดชเตเดชเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดเตเดเตพ เดเดถเตเดฐเดฏเดฟเดเตเดเดฐเตเดคเต.
เดฑเตเดกเตเดเตเดฎเตเดฐเตเดกเต -
เด เดญเดฟเดชเตเดฐเดพเดฏเดเตเดเดณเดฟเตฝ เดจเดฟเตผเดฆเตเดฆเตเดถเดฟเดเตเดเตเด...
เดฌเดจเตเดงเดชเตเดชเตเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต)
เด เดตเดฒเดเดฌเด: www.habr.com