два ламерских вопросика про php и mysql
наболело вот! пишу валидацию полей формы. скажем в проекте валидацию логина и пароля нужно делать не один раз! появилось желание создать файл, в котором описать все функции и просто подключить его на форму.
например validate.php
function vPassword($password) {
код
...
return true/false;
}
function vLogin($login) {
код
...
return true/false;
}
?>
чтобы подключить как нужно сделать?
myform.php
include_once("validate.php");
$password=trim($_POST["password"]);
$login=trim($_POST["login"]);
if(vPpassword($password) && vLogin($login)) {
тут будет, скажем, sql запрос к базе
...
}
echo '
<form name="loginForm" action="myform.php" method="post">
Логин <input name="login" type="text" />
Пароль <input name="password" type="password" />
</form>
';
?>
Второй вопрос вот такой.
Я не эксперт но обычно делаю так! Создаю файл mysql_connect.php, там прописываю что-то вроде, и подключаю этот файл в заголовке pgheader.php
$db_user = 'root';
$db_password = '';
$db_location = 'localhost';
$db_name = 'mca';
$dbcnx = @mysql_connect($db_location,$db_user,$db_password);
if (!$dbcnx) {
echo '<div>Error: The database server is not available, the correct rendering is impossible.</div>';
exit();
}
if (!@mysql_select_db($db_name, $dbcnx)) {
echo '<div>Error: Database is not available, the correct rendering is impossible.</div>';
exit();
}
mysql_set_charset('utf8');
?>
а потом в нужном мне месте, на любой странице выполняю sql запросы, так
$result = mysql_query($query) or die(mysql_error());
Вопрос в том, нужно ли закрывать соединение с базой? после каждого запроса?
Я так понимаю если закроешь, прийдется его снова открывать. А если оно будет всегда открыто на сколько это "хорошо"? Или нет ничего страшного?
2) Соединение будет открыто до окончания выполнения скрипта. После окончания выполнения - оно сам автоматически закроется. Постоянно дергать БД на подключение-отключение - это плохо, лучше держите соединение всегда открытым.
2. UAS сказал правлино, но я уточню вместо mysql_connect, лучше использывать mysql_pconnect, ему будет пофиг на mysql_close - закрыватся не будет.
2. UAS сказал правлино, но я уточню вместо mysql_connect, лучше использывать mysql_pconnect, ему будет пофиг на mysql_close - закрыватся не будет.
Ага, в итоге при увеличении нагрузки все вывалится с to many mysql connection. Некоторые хостинг-провайдеры даже запрещают использовать mysql_pconnect().
ну тут нужно искать золотую середину. Так как постоянные дерганья коннектами тоже не очень хорошо.
ИМХО:
1. Выполняется скрипт - выполняется подключение и запрос к БД. Сайт не посещается - подключение не создается и не висит. Вариант Too Many SQL connections практически исключен.
2. Если у вас высоконагруженный проект, под который нужен целый сервер (типа социальной сети), с AJAX-запросами и т.д. - стоит заморочиться с мультиплексорами, где нагрузка на распределение данных возлагается на фронт-энд сервера в виде мультиплексора, а в бэк-энде висит 1 подключение к базе, через которое гоняются запросы...
Честно говоря, сами никогда не сталкивался, но нужно почитать про распределенные системы и масштабируемость веб-приложений...
ТС-у:
Скажите, а зачем вам отдельная проверка логина и пароля?
Вы отдельно проверяете существование логина и отдельно существования пароля??? )
Может, лучше так:
/*
Проверка валидности логина (длинны, символов)
Проверка валидности пароля (длинный, символов)
Проверка в базе
*/
if(mysql_num_rows(mysql_query("select * from users where login='$login' AND password='$password'"))==1) return true;
else return false;
}