Обучаюсь php+mysql, мои вопросы
1.
Don (19.06.2011 / 13:29)
Добрый день, сегодня решил учить php+mysql, будут несколько личных вопросов.
Читаю php.su дошёл до Константы PHP
там есть пример с Пи. интересно ещё где вы используете константы
Хочу ваши примеры которые вы используете на сайтах, кто с чего начинал
Желательно примеры математического характера, типа задачки
2.
ramzes (19.06.2011 / 14:15)
Константа это константа.
она один раз определяется и переназначить ее нельзя.
кроме того область видимости у нее как у суперглобальных массивов.
она видна и в классах и в функциях
3.
Дмитрий (19.06.2011 / 14:19)
ramzes (19 Июня 2011 / 13:15)
Константа это константа.
И самое главное - что с этим не поспоришь ведь!
З.Ы. К примеру, если ты юзаешь константу в функции, то ее не нужно объявлять. Достаточно просто обратиться к ней. К примеру, обычная переменная в функции не работает, ее нужно заново объявлять. Глобальная переменная - ее тоже для начала нужно вызвать....
4.
Don (19.06.2011 / 15:04)
3. А где ты константу часто используют?
К примеру я думаю использовать
Вот мой к примеру cms
<?php
require 'system/config.php';
require 'system/functions.php';
include 'style/'.$style.'/head.php'; - Можно ли её поместить в functions.php в виде константы
include 'style/'.$style.'/foot.php';
?>
Добавлено через 05:10 сек.
вот как я думаю использовать её
system/functions.php
<?php
тра ля ля.....
define ('HEAD','style/'.$style.'/head.php')
define ('FOOT','style/'.$style.'/foot.php')
?>
потом вывести
<?php
require 'system/config.php';
require 'system/functions.php';
define HEAD;
тра ля ля..
define FOOT;
?>
5.
ramzes (19.06.2011 / 15:10)
3.
dima.london, это называется областью видимости
Добавлено через 01:29 сек.
4.
Suleiman, можно, любой текст, как и в переменную
\\ принято использовать верхний регистр в именах констант, для лучшей читаемости кода
Добавлено через 03:32 сек.
define head;
тра ля ля..
не так
echo head;
вот так
6.
Виталий (19.06.2011 / 15:14)
4.
Suleiman, include head; .... называй константы большими буквами желательней
7.
Don (19.06.2011 / 15:14)
5. аха, насчёт регистра вроде читал просто забыл сделать
хотя мне кажется если я буду диз вбивать в константы не везде откроется диз,так как в некоторых случиях пути будут разные, к примеру вдруг путь нужно сделать ../style/'.$style.'/head.php - (..), мм теперь нужно будет константу попробовать использовать в условиях if() - можете примерчик сделать наглядный где можно в cms использовать его к примеру
8.
Дмитрий (19.06.2011 / 15:30)
7.
Suleiman, Выражения - это как бы твои действия. Объявил переменную - объявляемая переменная - это Выражение. Обратился к функции, ф-я - это выражение.
Фраза echo 'Ёкерный Бабай'; - это тоже выражение. Только строковое. Выражения бывают логическими и нелогическими. К примеру, конструкция ifelse - логическое выражение. Все, где ты что-то сравниваешь, подсчитываешь и пр. - короче, где применяется логика - логические выражения. Типа так. Проще погуглить. Там дядьки вумные рассказывают. Университеты позаканчивали.
Добавлено через 02:26 сек.
о, ты 7 пост изменил, а я уже успел ответить
9.
Don (19.06.2011 / 16:13)
8.
нормально всё, на следующий вопрос считай что ответил
10.
Don (21.06.2011 / 01:21)
Дошел до функции isset,upset
, у кого какие есть коментарии?
11.
ramzes (21.06.2011 / 02:02)
Дошел до 29 уровня в старкрафт 2, у кого какие будут комментарии?
надеюсь намек ясен?;)
12.
Don (21.06.2011 / 08:02)
11.Рамзес зачем острить?
, я же в первом посте написал что мне нужны ваши примеры и ваша помощь в обучении, "ваши комментарии" - я имел виду ваши примеры.
и где вы используете эти функции, это всё мне нужно для того чтобы закрепить то что я прочел, а в друг я что то упустил, а вы своим пример можете помочь
13.
Анатолий (21.06.2011 / 13:47)
Так покажи свой пример, и если что-то неправильно - тебя ткнут носом в них.
А так то мы не в садике, чтобы со всеми няньчится. начни писать что-то свое - будет проще и легче
14.
Don (21.06.2011 / 14:45)
dekameron (21 Июня 2011 / 13:47)
Так покажи свой пример, и если что-то неправильно - тебя ткнут носом в них.
А так то мы не в садике, чтобы со всеми няньчится. начни писать что-то свое - будет проще и легче
Пример я могу предоставить с учебника потому что больше нигде не видел где используют его, а вот эту функцию где в cms использовать я не знаю, поэтому наверно и создал тему...
15.
ramzes (21.06.2011 / 14:56)
Давай проще, ты спрашивай конкретные какие то моменты, будешь получать нормальные ответы.
а "комментарии", да их просто нет, функция и функция
16.
Анатолий (21.06.2011 / 18:36)
Suleiman (21 Июня 2011 / 13:45)
а вот эту функцию где в cms использовать я не знаю
Начни писать с нуля, или разбери готовую (например Ротор возьми).
Исходя из логики сообщений ты пытаешься написать коллективную ЦМС посредством форума, но тут мнения будут расходиться и вряд ли получится что-то хорошее.
Пока сам пару раз не натолкнешься на подводные камни связанные с определенной функцией, не усвоишь урок на 100% ;) даю гарантию, сам так учился
17.
Андрей (21.06.2011 / 19:05)
вот коментарий по поводу isset();
<?php
if(isset(Мозг)){
echo'Не создавай такие темы!';
}else{
echo'Бросай это дело!';
}
?>
Добавлено через 07:06 сек.
Причём Мозг в этом случае- объект, это видно с первой заглавной буквы и так как он не саздаётся- его нет.
18.
Don (21.06.2011 / 21:56)
Вроде всё прочёл, щас буду писать cms и скрипты
посмотрим что получиться
19.
Андрей (21.06.2011 / 22:35)
Suleiman (21 Июня 2011 / 21:56)
Вроде всё прочёл, щас буду писать cms и скрипты посмотрим что получиться
Получится УГ. Когда будет опыт 5 лет- именнр как на УГ и посмотриш на свой код.
20.
Don (21.06.2011 / 23:29)
Барыга Обама (21 Июня 2011 / 22:35)
Получится УГ. Когда будет опыт 5 лет- именнр как на УГ и посмотриш на свой код.
а почему именно 5 лет? за месяц нельзя выучить?
вроде уже за 8 дней прочёл это теория, ну наверно ещё месяц практики( по 6 часов в день) и всё
21.
ramzes (21.06.2011 / 23:37)
17.
Барыга Обама,не зачет
Добавлено через 01:11 сек.
20.
Suleiman, за месяц нельзя, и за два тоже нельзя
прочесть, понять, научиться использовать, все это разные вещи
22.
Don (22.06.2011 / 11:36)
Сегодня буду делать блог, щас думаю как сделать форму регистрации,
session_start() - щас эту функцию разбираю
23.
Тимофей (22.06.2011 / 18:36)
Suleiman (21 Июня 2011 / 21:56)
Вроде всё прочёл, щас буду писать cms и скрипты посмотрим что получиться
и ничего не получиться...за неделю-две не реально выучить...может быть вызубрить да,хотя что с этого выйдет...брр
24.
ramzes (22.06.2011 / 18:42)
22.
Suleiman, давно так не смеялся)) спасибо
покажи потом, что накодишь))
25.
Don (22.06.2011 / 18:49)
Gamermania (22 Июня 2011 / 18:36)
и ничего не получиться...за неделю-две не реально выучить...может быть вызубрить да,хотя что с этого выйдет...брр
Если pascal за 2-3 месяца по программе изучить можно, используя аналогом pascal можно вызубрить php, а структуру mysql можно понять по принципам Microsoft Office Access.
Добавлено через 01:13 сек.
ramzes (22 Июня 2011 / 18:42)
22. Suleiman, давно так не смеялся)) спасибо
покажи потом, что накодишь))
ок попытаюсь
26.
Don (22.06.2011 / 20:08)
Форма регистрации нужна помощь
Вот создал полегон для работы phpme.ru
Думаю создать таблицу в базе:
- id
- *logim
- *password
- *password_too
- *name
- *gender (пол)
- ip
- level
- time
- regtime
- mail
Теперь нужно создать файла
- index
- login
- registration.php
- captcha
- system/config - соединяем базу + создаём функции для сессии
- functions
#главная - извините, моя первая запись может что то не понятно будет
<?php
/* Technology by Suleiman, phpme.ru */
# шапка html
include 'style/default/head.php';
# конец html
#################################
require 'system_cms/config.php';
// require 'system_cms/functions.php'; /* Тест режим*/
#################################
########## Тело сайта ###########
echo '<div class="head">
<a href="#"><big><b>PHPme<span>.Ru</span></b></big></a>
</div>';
# Навигация
echo '<div class="nav">
<a href="/">Главная</a> | <a href="/">Блоги</a> | <a href="/">Новости</a> |
<a href="/">Поддержка</a>
</div>';
# Авторизация, регистрация
echo '<div class="menu">
<div class="adv">
<a href="#"><span style="color:#444444">Авторизация</span></a>
<a href="#"><span style="color:#444444">Регистрация</span></a>
<a href="#"><span style="color:#444444">Забыли пароль?</span></a>
</div>';
# Меню
echo '<div class="line">
<span class="title">Меню</span></div>
<div class="em">
<a href="http://#">You blogs title<br>
<span>Тест...</span></a>
<a href="http://#">You blogs title<br>
<span>Тест...</span></a>
<a href="http://#">You blogs title<br>
<span>Тест...</span></a>
</div>';
# Статисктика
echo '<div class="line">
<span class="title">Инфо</span>
</div>';
echo '<div class="em">
» Все публикаций: 0 <br>
» Всего файлов: 0 <br>
» Общий размер: 0 б <br>
</div></div>';
############# Конец ############
# Подвал html
include 'style/default/foot.php';
# Конец html
?>
27.
Don (22.06.2011 / 20:09)
Щас нужно создать форму регистрации
я начал писать так
echo '<form action="registration.php" method="post">
<div>
*Логин: <br/>
<input name="login" type="text" value="" /><br/>
*Имя:<br/>
<input name="name" type="text" value="" /><br/>
*Вы:<br/>
<select size="1" name="gender">
<option value="1">Парень</option>
<option value="2">Девушка</option>
</select><br/>
*Пароль:<br/>
<input name="password" type="text" value="" /><br/>
*Повторите пароль:<br/>
<input name="password1" type="text" value="" /><br/>
Почта (не обезательно):<br/>
<input name="mail" type="text" value="" /><br/>
*Код с картинки: <img src="captcha.php" alt="captcha" /><br/>
<input name="code" type="text" value="" /><br/>
<input type="submit" value="Регистрировать!" /></div></form></div>';
#################################
include 'style/default/foot.php';
#################################
echo '</div></body></html> ';
Добавлено через 07:12 сек.
нужна помощь в registration.php как создать проверку и сделать фильтрацию переменным и т.д.
28.
ramzes (22.06.2011 / 20:17)
27.
Suleiman, и?
_______
ошибки исправляй, на сайте не должно быть ошибок, это отталкивает очень
(не обЯзательно )
Добавлено через 01:57 сек.
if(isset($_POST['login']) AND preg_match('|^[a-z\d]{3,20}$|i', $_POST['login'])){
29.
Don (22.06.2011 / 20:49)
ramzes (22 Июня 2011 / 20:17)
27. Suleiman, и?
_______
ошибки исправляй, на сайте не должно быть ошибок, это отталкивает очень
(не обЯзательно )
Добавлено через 01:57 сек.
if(isset($_POST['login']) AND preg_match('|^[a-z\d]{3,20}$|i', $_POST['login'])){
непонял про какие ты ошибки говоришь?
30.
ramzes (22.06.2011 / 20:56)
29.
Suleiman,про обезательно => обЯзательно
и еще там пара попадалась
31.
Don (26.06.2011 / 13:47)
preg_match('|^[a-z\d]{3,20}$|i', $_POST['login'])) - вот этот код дает доступ определённым символом так?
Добавлено через 01:26 сек.
я ещё встретил такой код
!empty($_POST['login']) && !empty($_POST['password']) && !empty($_POST['password1']) && !empty($_POST['code'])
Что дает код !empty - тоже вроде на наличие проверки так?
32.
ZaRiN (26.06.2011 / 14:03)
empty проверка на "пустоту"
в данному случае !empty($_POST['login']) = не пустая $_POST['login']
33.
Андрей (26.06.2011 / 15:26)
32.
mr.Z, извиняюсь что лезу =)
А если указать пустоту в виде символа то он пропустит такой логин?
Добавлено через 00:21 сек.
Например ВК так безымянки регают...
34.
ZaRiN (26.06.2011 / 15:54)
33, пропустит
35.
Don (27.06.2011 / 16:02)
мм догнал)), теперь нужно узнать как сделать филтрацию POST, GET, И ПОНЯТЬ СМЫСЛ ФИЛЬТРАЦИИ/ для чего это нужно))
36.
Назар (27.06.2011 / 17:32)
35.
Suleiman, Фильтрация нужна для избежания ошибок в работе скрипта,которыми могут воспользоваться плохие люди или которые могут навредить роботе скрипта в целом.
Фильтрация супер глобальных массивов $_POST,$_GET делается также как и для обычных переменных. Если ты знаешь имя переменной, обращаешься к ней по имени (например $_GET['login]), если хочешь отфильтровать весь массив, используешь конструкцию :
<?php
foreach ($_POST as $key=>$value){
$_POST[$key]=функция_фильтрации($value);
}
?>
37.
ramzes (27.06.2011 / 18:10)
36.
demeros, не надо учить плохому
38.
Don (27.06.2011 / 18:37)
ramzes (27 Июня 2011 / 18:10)
36. demeros, не надо учить плохому
Всмысле плохому?
39.
ramzes (27.06.2011 / 18:49)
38.
Suleiman, в смысле не делай так как он советовал.
каждую переменную надо фильтровать там где ты ее используешь, в соответствии с ее типом, и только если она нуждается в фильтрации
40.
Назар (28.06.2011 / 19:58)
Вопрос - ответ - возможный пример. Делать как написано никто не заставляет.)
41.
Titov (29.06.2011 / 11:46)
39 ну можно две функции соорудить для числовых и прочих значений переменной
<?
function MyFuncL($s)
{
$s = htmlspecialchars($s);
$s = str_replace('$', '$$', $s);
$s = mysql_escape_string($s);
return $s;
}
?>
и для цыфер
<?
function MyFuncN($s)
{
$s = abs(intval($s));
return $s;
}
////////////////
foreach ($_POST as $key=>$value){
$_POST[$key]=MyFunc[L]($value); //// L или N уже по значению переменной определять
}
?>
42.
ramzes (29.06.2011 / 13:29)
41.
Тitov, и как определять по значению переменной?))
я тебе пошлю index.php?page=fuck&userName=3452354354g435fgs
и все, функция эта ни как не поможет
на месте надо проверять, на месте
43.
Studentsov (29.06.2011 / 16:46)
1. Используй PDO, никаких инъекций не будет
2. При записи в базу фильтруй контент только на спец. символы, 0-31 в таблице ASCII (исключая переносы строк)
3. При выводе - htmlentity
44.
ramzes (29.06.2011 / 17:17)
43.
Дмитрий, удобнее фильтровать 1 раз перед записью, чем постоянно после нее
45.
Studentsov (29.06.2011 / 17:21)
Зато так можно прикрутить всякие вкусняшки вроде html в сообщениях. Хотя где и кому я это рассказываю...
46.
yanm (24.07.2011 / 14:29)
Дабы не создавать тему изза пустяка напишу здесь:
Вобшем есть массив из ста переменных
$mas[]="первое";
$mas[]="второе";
$mas[]="третье";
...
Как переменной $a присвоить случайное значение из этого массива?
Заранее спасибо!
47.
ramzes (24.07.2011 / 14:38)
Что есть $а?
Добавлено через 01:10 сек.
45.
Дмитрий, для этого не надо заливать нефильтруя, base64 для чего используют в том же мыле например?
48.
Саня (24.07.2011 / 14:41)
$a = $mas[mt_rand(0,(sizeof($mas)-1))]
49.
ramzes (24.07.2011 / 15:18)
48.
sanzstez, $a = $mass[array_rand($mass)];
50.
yanm (24.07.2011 / 17:01)
Ага, пока копал в направлении, указанном Санчезом, появилось короткое готовое решение
48.
sanzstez, +1
Вот так пошло:
$mas[]="первое";
$mas[]="второе";
$mas[]="третье";
...
$a = mt_rand(0,sizeof($mas));
echo "$mas[$a]";
49.
ramzes, вообще четко, через 3 часа +1
51.
Саня (24.07.2011 / 17:07)
50.
yanm, надо еще единицу отнимать если используешь этот вариант.
Ибо сайзоф возвратит число элементов 100 , а нумерация в массиве с 0 до 99 (тоже 100 элементов). Если выпадет 100 вернется пустое значение. Вот потому и
$size = sizeof($mas) - 1;
$a = mt_rand(0,$size);
52.
Don (23.08.2012 / 09:52)
Вопрос#1). Сколько записей вернется после исполнения следующего запроса: SELECT users.name, emails.email FROM users JOIN emails ON emails.id = users.id
Добавлено через 02:09 сек.
Вопрос#2). Сколько записей вернется после исполнения следующего запроса: SELECT * FROM users WHERE pos < 10
53.
Don (23.08.2012 / 10:08)
Что будет выведено в браузер после выполнения кода?
54.
Михаил (23.08.2012 / 10:19)
Скорее всего ошибку, слишком много фактических параметров
55.
Don (23.08.2012 / 10:21)
Что будет выведено в браузер после выполнения кода?
function foo(){
static $counter;
$counter++;
echo $counter;
unset($counter);
$counter=0;
}
foo();
foo();
foo();
56.
Петр (23.08.2012 / 11:41)
53.
Suleiman, 6. "Слишком много фактических параметров" не вызывает ошибки в принципе.
Добавлено через 03:40 сек.
55.
Suleiman, а здесь, наверное, "111", хотя не уверен.
57.
Петр (23.08.2012 / 11:57)
А нет, однако, будeт 123, так как "unset() удалит переменную только в контексте дальнейшего выполнения функции".
58.
Don (23.08.2012 / 14:12)
Im-ieee (23 Августа 2012 / 11:57)
А нет, однако, будeт 123, так как "unset() удалит переменную только в контексте дальнейшего выполнения функции".
в смысле контексте?
Добавлено через 00:43 сек.
Что будет выведено в браузер после выполнения кода?
echo long2ip(ip2long('127.0.256'));
59.
Петр (23.08.2012 / 14:57)
58.
Suleiman, в прямом. То есть, пока функция не выполнится, статическая переменная будет недоступна, скажем так. А вообще тебе денвер, что ли, установить лень для проверки?
60.
Don (23.08.2012 / 16:13)
Я Проверяю, просто суть хочу понять почему она так работает))
URL:
https://visavi.net/topics/22548