Обучаюсь php+mysql, мои вопросы

1. Don (19.06.2011 / 13:29)
Добрый день, сегодня решил учить php+mysql, будут несколько личных вопросов.
Читаю php.su дошёл до Константы PHP
там есть пример с Пи. интересно ещё где вы используете константы smile
Хочу ваши примеры которые вы используете на сайтах, кто с чего начинал smile
Желательно примеры математического характера, типа задачкиsmile

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, это называется областью видимостиsmile

Добавлено через 01:29 сек.
4. Suleiman, можно, любой текст, как и в переменную
\\ принято использовать верхний регистр в именах констант, для лучшей читаемости кода

Добавлено через 03:32 сек.
define head;
тра ля ля..
не так
echo head;
вот так

6. Виталий (19.06.2011 / 15:14)
4. Suleiman, include head; .... называй константы большими буквами желательней smile

7. Don (19.06.2011 / 15:14)
5. аха, насчёт регистра вроде читал просто забыл сделать smile хотя мне кажется если я буду диз вбивать в константы не везде откроется диз,так как в некоторых случиях пути будут разные, к примеру вдруг путь нужно сделать ../style/'.$style.'/head.php - (..), мм теперь нужно будет константу попробовать использовать в условиях if() - можете примерчик сделать наглядный где можно в cms использовать его к примеру smile

8. Дмитрий (19.06.2011 / 15:30)
7. Suleiman, Выражения - это как бы твои действия. Объявил переменную - объявляемая переменная - это Выражение. Обратился к функции, ф-я - это выражение.
Фраза echo 'Ёкерный Бабай'; - это тоже выражение. Только строковое. Выражения бывают логическими и нелогическими. К примеру, конструкция ifelse - логическое выражение. Все, где ты что-то сравниваешь, подсчитываешь и пр. - короче, где применяется логика - логические выражения. Типа так. Проще погуглить. Там дядьки вумные рассказывают. Университеты позаканчивали. E

Добавлено через 02:26 сек.
о, ты 7 пост изменил, а я уже успел ответить E

9. Don (19.06.2011 / 16:13)
8. D нормально всё, на следующий вопрос считай что ответил smile

10. Don (21.06.2011 / 01:21)
Дошел до функции isset,upset smile , у кого какие есть коментарии?smile

11. ramzes (21.06.2011 / 02:02)
Дошел до 29 уровня в старкрафт 2, у кого какие будут комментарии?
надеюсь намек ясен?;)

12. Don (21.06.2011 / 08:02)
11.Рамзес зачем острить?smile , я же в первом посте написал что мне нужны ваши примеры и ваша помощь в обучении, "ваши комментарии" - я имел виду ваши примеры.smile и где вы используете эти функции, это всё мне нужно для того чтобы закрепить то что я прочел, а в друг я что то упустил, а вы своим пример можете помочьsmile

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 сек.
Причём Мозг в этом случае- объект, это видно с первой заглавной буквы и так как он не саздаётся- его нет. smile

18. Don (21.06.2011 / 21:56)
Вроде всё прочёл, щас буду писать cms и скрипты smile посмотрим что получиться smile

19. Андрей (21.06.2011 / 22:35)
Suleiman (21 Июня 2011 / 21:56)
Вроде всё прочёл, щас буду писать cms и скрипты smile посмотрим что получиться smile
Получится УГ. Когда будет опыт 5 лет- именнр как на УГ и посмотриш на свой код.

20. Don (21.06.2011 / 23:29)
Барыга Обама (21 Июня 2011 / 22:35)
Получится УГ. Когда будет опыт 5 лет- именнр как на УГ и посмотриш на свой код.
а почему именно 5 лет? за месяц нельзя выучить? smile вроде уже за 8 дней прочёл это теория, ну наверно ещё месяц практики( по 6 часов в день) и всё smile

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 и скрипты smile посмотрим что получиться smile
и ничего не получиться...за неделю-две не реально выучить...может быть вызубрить да,хотя что с этого выйдет...брр

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, давно так не смеялся)) спасибо
покажи потом, что накодишь))
ок попытаюсьsmile

26. Don (22.06.2011 / 20:08)
Форма регистрации нужна помощь smile Вот создал полегон для работы 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)
Щас нужно создать форму регистрации smile
я начал писать так
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, извиняюсь что лезу =)
А если указать пустоту в виде символа &#13; то он пропустит такой логин?

Добавлено через 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
и все, функция эта ни как не поможетsmile
на месте надо проверять, на месте

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)
Ага, пока копал в направлении, указанном Санчезом, появилось короткое готовое решение smile
48. sanzstez, +1
Вот так пошло:
$mas[]="первое"; 
$mas[]="второе"; 
$mas[]="третье";
...
$a = mt_rand(0,sizeof($mas));
echo "$mas[$a]";
49. ramzes, вообще четко, через 3 часа +1 smile

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