------
Phần 78. Bài
tập xử lý tập tin 1
Đây là clip số 81:
Liệt kê cấu trúc tập tin (đến cấp 2),
$data = scandir('.');
$result = '<ul>';
foreach ($data as $key
=> $value) {
if ($value != '.'
&& $value != '..') {
if (is_dir($value)) {
$result .=
'<li>'. 'D: ' . $value . '<ul>';
$childData =
scandir('./'.$value);
foreach ($childData
as $key1 => $value1) {
if ($value1 !=
'.' && $value1 != '..') {
if
(is_dir("./$value/$value1")) {
$result .=
'<li>'. 'D: ' . $value1 . '</li>';
} else {
$result .=
'<li>' . 'F: ' . $value1 . '</li>';
}
}
}
$result .=
'</ul></li>';
} else {
$result .=
'<li>' . 'F: ' . $value . '</li>';
}
}
}
$result .= '</ul>';
echo $result;
Đây là clip số 82:
Bài tập liên quan đến xử lý tập tin.
Xử lý cho việc bấm nút cancel để quay lại trang chủ: tới
thời điểm này, để chuyển từ trang web này sang trang web khác có hai cách: một
là sử dụng thuộc tính action của form, hai là sử dụng thẻ <a>. Ở phần này
sẽ học thêm một cách mới là sử dụng JavaScript. Ví dụ,
[HTML – trang add.php]
<input type="button" value="Hủy" id="btnHuy">
[jQuery]
$(document).ready(function() {
$('#btnHuy').click(function() {
window.location =
'index.php';
});
});
Đây là clip số 83:
Các bước thực hiện:
1. Tạo giao diện để nhập tiêu đề và mô tả của tập tin
(add.php)
2. Viết đoạn mã kiểm tra dữ liệu đầu vào
3. Nếu dữ liệu nhập vào hợp lệ, thực hiện tạo tập tin với
tên ngẫu nhiên, tạo dữ liệu và ghi dữ liệu vào tập tin.
Lưu lại đoạn mã để tham khảo:
[add.php]
<!DOCTYPE html>
<html lang="en">
<head>
<meta
charset="UTF-8">
<title>Document</title>
<link
rel="stylesheet" href="style.css">
<script
src="js/jquery.js"></script>
<script>
$(document).ready(function() {
$('#btnHuy').click(function() {
window.location =
'index.php';
});
});
</script>
</head>
<body>
<?php
require_once
'functions.php';
$flag = false;
$errorTitle = '';
$errorDescription = '';
$title = '';
$description = '';
if
(isset($_POST['title']) && isset($_POST['description'])) {
$title =
$_POST['title'];
$description =
$_POST['description'];
// kiểm tra dữ liệu
nhập vào
if (checkEmpty($title))
{
$errorTitle = '<p
class="error">Tiêu đề không được để trống</p>';
}
if (checkLength($title,
5, 100)) {
$errorTitle .= '<p
class="error">Tiêu đề dài từ 5 đến 100 kí tự</p>';
}
if (checkEmpty($description))
{
$errorDescription =
'<p class="error">Mô tả không được để trống</p>';
}
if
(checkLength($description, 10, 500)) {
$errorDescription .=
'<p class="error">Mô tả dài từ 10 đến 500 kí tự</p>';
}
// nếu dữ liệu hợp lệ
if ($errorTitle == ''
&& $errorDescription == '') {
$data = $title . '||'
. $description;
$name =
randomString(5);
$fileName =
'./files/' . $name . '.txt';
if
(file_put_contents($fileName, $data)) {
$title = '';
$description = '';
$flag = true;
}
}
}
?>
<div
class="wrapper">
<div
class="heading">ADD FILE</div>
<div
id="form">
<form
action="add.php" method="post">
<div
class="row">
<p
class="title">Tiêu đề</p>
<input
type="text" name="title" value="<?php echo $title;
?>">
<?php echo
$errorTitle; ?>
</div>
<div
class="row">
<p
class="title">Mô tả</p>
<textarea
name="description" rows="5" cols="100"><?php
echo $description; ?></textarea>
<?php echo
$errorDescription; ?>
</div>
<div
class="row">
<input
type="submit" value="Lưu">
<input
type="button" value="Hủy" id="btnHuy">
</div>
<?php
if ($flag == true) {
echo '<div
class="row">Ghi dữ liệu thành công!</div>';
}
?>
</form>
</div>
</div>
</body>
</html>
[functions.php]
<?php
// kiểm tra dữ liệu khác rỗng
function
checkEmpty($value) {
$flag = false;
if (!isset($value) ||
trim($value) == '') {
$flag = true;
}
return $flag;
}
// kiểm tra chiều dài dữ liệu
function
checkLength($value, $min, $max) {
$flag = false;
$length =
strlen($value);
if ($length < $min
|| $length > $max) {
$flag = true;
}
return $flag;
}
// tạo tên tập tin ngẫu nhiên
function
randomString($length = 5) {
// tạo ra một mảng gồm
các kí tự AZaz09
$arrChar =
array_merge(range('A', 'Z'), range('a', 'z'), range('0', '9'));
// chuyển mảng thành
chuỗi
$chars =
implode($arrChar, '');
// đảo chuỗi ngẫu nhiên
$chars =
str_shuffle($chars);
$result =
substr($chars, 0, 5);
return $result;
}
?>
[style.css]
* {
margin: 0px;
padding: 0px;
box-sizing: border-box;
}
.wrapper {
width: 800px;
height: 400px;
margin: 10px auto;
}
.heading {
font-style: 18px;
font-weight: bold;
color: red;
text-align: center;
margin: 10px 0;
}
#form {
width: 100%;
height: 300px;
border: 2px solid blue;
padding: 10px;
}
.title {
font-style: 16px;
font-weight: bold;
color: blue;
}
.error {
font-style: italic;
color: red;
}
input[type="submit"],
input[type="button"] {
padding: 5px;
width: 60px;
font-weight: bold;
margin: 10px;
}
-----------
Cập nhật [16/9/2020]
-----------