<?php
define('CONTACT_LIST_FILE', 'contacts.txt'); // we are setting constant var
if (isset($_GET['name'])) { $name = $_GET['name'];
$age = $_GET['age'];
$phone = $_GET['tel'];
$email = $_GET['email'];
$error_msg[] = 'Name has to be written between 3 - 10 characters';
}
if (!preg_match('/^[0-9]{2}$/i', $age) || $age < 20 || $age > 30) { $error_msg[] = 'Age has to between 20 and 30';
}
if (!preg_match('/(?<!\w)(\(?(\+|00)?48\)?)?[ -]?\d{3}[ -]?\d{3}[ -]?\d{3}(?!\w)/', $phone)) { $error_msg[] = 'Only polish numbers are valid';
}
$error_msg[] = 'Not valid email address';
}
// we are adding new record
if (count($error_msg) == 0) { $row = $_GET['name'] . ',' . $_GET['age'] . ',' . $_GET['tel'] . ',' . $_GET['email'];
// echo 'added' . $row;
if ($status !== false) {
echo 'Added ' . $row;
} else {
echo 'Problem with saving data to file';
}
} else {
echo '<p style="color:red">' . implode("</br>", $error_msg) . '</p>'; }
}
?>
<table border="1" cellpadding="5" style="margin-bottom: 20px">
<tr>
<th>name</th>
<th>age</th>
<th>phone number</th>
<th>email address</th>
</tr>
<tr>
$contacts = file(CONTACT_LIST_FILE
); foreach ($contacts as $index => $contact) {
echo "<tr>
<td>$data[0]</td>
<td>$data[1]</td>
<td>$data[2]</td>
<td>$data[3]</td>
</tr>";
}
}
?>
</table>
<form>
<label for="name">First name</label>
<input name="name" type="text">
<label for="age">Age</label>
<select name="age">
<?php
for ($i = 20; $i <= 30; $i++) {
echo '<option>' . $i . '</option>';
}
?>
</select>
<br>
<label for="tel">Phone (only polish numbers are valid)</label>
<input name="tel"/>
<br>
<label for="email">Email</label>
<input name="email"/>
<br>
<button name="add">ADD</button>
</form>
PD9waHAKCmRlZmluZSgnQ09OVEFDVF9MSVNUX0ZJTEUnLCAnY29udGFjdHMudHh0Jyk7IC8vIHdlIGFyZSBzZXR0aW5nIGNvbnN0YW50IHZhcgoKCmlmIChpc3NldCgkX0dFVFsnbmFtZSddKSkgewogICAgJG5hbWUgPSAkX0dFVFsnbmFtZSddOwogICAgJGFnZSA9ICRfR0VUWydhZ2UnXTsKICAgICRwaG9uZSA9ICRfR0VUWyd0ZWwnXTsKICAgICRlbWFpbCA9ICRfR0VUWydlbWFpbCddOwogICAgJGVycm9yX21zZyA9IGFycmF5KCk7CgogICAgaWYgKCFwcmVnX21hdGNoKCcvXlthLXpdezMsMTB9JC9pJywgJG5hbWUpKSB7CiAgICAgICAgJGVycm9yX21zZ1tdID0gJ05hbWUgaGFzIHRvIGJlIHdyaXR0ZW4gYmV0d2VlbiAzIC0gMTAgY2hhcmFjdGVycyc7CiAgICB9CiAgICBpZiAoIXByZWdfbWF0Y2goJy9eWzAtOV17Mn0kL2knLCAkYWdlKSB8fCAkYWdlIDwgMjAgfHwgJGFnZSA+IDMwKSB7CiAgICAgICAgJGVycm9yX21zZ1tdID0gJ0FnZSBoYXMgdG8gYmV0d2VlbiAyMCBhbmQgMzAnOwogICAgfQogICAgaWYgKCFwcmVnX21hdGNoKCcvKD88IVx3KShcKD8oXCt8MDApPzQ4XCk/KT9bIC1dP1xkezN9WyAtXT9cZHszfVsgLV0/XGR7M30oPyFcdykvJywgJHBob25lKSkgewogICAgICAgICRlcnJvcl9tc2dbXSA9ICdPbmx5IHBvbGlzaCBudW1iZXJzIGFyZSB2YWxpZCc7CiAgICB9CgogICAgaWYgKCFmaWx0ZXJfdmFyKCRlbWFpbCwgRklMVEVSX1ZBTElEQVRFX0VNQUlMKSkgewogICAgICAgICRlcnJvcl9tc2dbXSA9ICdOb3QgdmFsaWQgZW1haWwgYWRkcmVzcyc7CiAgICB9CgovLyB3ZSBhcmUgYWRkaW5nIG5ldyByZWNvcmQKICAgIGlmIChjb3VudCgkZXJyb3JfbXNnKSA9PSAwKSB7CiAgICAgICAgJHJvdyA9ICRfR0VUWyduYW1lJ10gLiAnLCcgLiAkX0dFVFsnYWdlJ10gLiAnLCcgLiAkX0dFVFsndGVsJ10gLiAnLCcgLiAkX0dFVFsnZW1haWwnXTsKLy8gICAgICAgIGVjaG8gJ2FkZGVkJyAuICRyb3c7CiAgICAgICAgJHN0YXR1cyA9IGZpbGVfcHV0X2NvbnRlbnRzKENPTlRBQ1RfTElTVF9GSUxFLCAkcm93LCBGSUxFX0FQUEVORCk7CiAgICAgICAgaWYgKCRzdGF0dXMgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIGVjaG8gJ0FkZGVkICcgLiAkcm93OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVjaG8gJ1Byb2JsZW0gd2l0aCBzYXZpbmcgZGF0YSB0byBmaWxlJzsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gJzxwIHN0eWxlPSJjb2xvcjpyZWQiPicgLiBpbXBsb2RlKCI8L2JyPiIsICRlcnJvcl9tc2cpIC4gJzwvcD4nOwogICAgfQp9Cgo/PgoKPHRhYmxlIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAyMHB4Ij4KICAgIDx0cj4KICAgICAgICA8dGg+bmFtZTwvdGg+CiAgICAgICAgPHRoPmFnZTwvdGg+CiAgICAgICAgPHRoPnBob25lIG51bWJlcjwvdGg+CiAgICAgICAgPHRoPmVtYWlsIGFkZHJlc3M8L3RoPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgICA8P3BocCBpZiAoZmlsZV9leGlzdHMoQ09OVEFDVF9MSVNUX0ZJTEUpKSB7CiAgICAgICAgICAgICRjb250YWN0cyA9IGZpbGUoQ09OVEFDVF9MSVNUX0ZJTEUpOwogICAgICAgICAgICBmb3JlYWNoICgkY29udGFjdHMgYXMgJGluZGV4ID0+ICRjb250YWN0KSB7CiAgICAgICAgICAgICAgICAkZGF0YSA9IGV4cGxvZGUoJywnLCAkY29udGFjdCk7CiAgICAgICAgICAgICAgICBwcmludF9yKCRkYXRhKTsKICAgICAgICAgICAgICAgIGVjaG8gIjx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+JGRhdGFbMF08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD4kZGF0YVsxXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPiRkYXRhWzJdPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+JGRhdGFbM108L3RkPgogICAgICAgICAgICA8L3RyPiI7CgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICA/Pgo8L3RhYmxlPgoKPGZvcm0+CiAgICA8bGFiZWwgZm9yPSJuYW1lIj5GaXJzdCBuYW1lPC9sYWJlbD4KICAgIDxpbnB1dCBuYW1lPSJuYW1lIiB0eXBlPSJ0ZXh0Ij4KICAgIDxsYWJlbCBmb3I9ImFnZSI+QWdlPC9sYWJlbD4KICAgIDxzZWxlY3QgbmFtZT0iYWdlIj4KICAgICAgICA8P3BocAogICAgICAgIGZvciAoJGkgPSAyMDsgJGkgPD0gMzA7ICRpKyspIHsKICAgICAgICAgICAgZWNobyAnPG9wdGlvbj4nIC4gJGkgLiAnPC9vcHRpb24+JzsKICAgICAgICB9CgogICAgICAgID8+CiAgICA8L3NlbGVjdD4KICAgIDxicj4KICAgIDxsYWJlbCBmb3I9InRlbCI+UGhvbmUgKG9ubHkgcG9saXNoIG51bWJlcnMgYXJlIHZhbGlkKTwvbGFiZWw+CiAgICA8aW5wdXQgbmFtZT0idGVsIi8+CiAgICA8YnI+CiAgICA8bGFiZWwgZm9yPSJlbWFpbCI+RW1haWw8L2xhYmVsPgogICAgPGlucHV0IG5hbWU9ImVtYWlsIi8+CiAgICA8YnI+CiAgICA8YnV0dG9uIG5hbWU9ImFkZCI+QUREPC9idXR0b24+Cgo8L2Zvcm0+