PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (98): В начало « ... 78 79 80 81 [82] 83 84 85 86 ... » В конец

> Найдено сообщений: 1459
ALEN Отправлено: 28 Июня, 2010 - 15:13:10 • Тема: CLASS метод в методе • Форум: Программирование на PHP

Ответов: 22
Просмотров: 1557
kochan10
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function method1($string){
  3. function method4(){
  4. global $var2;
  5. return preg_replace("/2010/isU","2013",$var2);
  6. }
  7. $var2=$string;
  8. echo method4();
  9. }
  10. method1("PHP is proud to announce TestFest 2010. TestFest is PHP's annual
  11. campaign to increase the overall code coverage of PHP through PHPT tests. During
  12. TestFest, PHP User Groups and individuals around the world organize local events
  13. where new tests are written and new contributors are introduced to PHP's testing
  14. suite.");
  15. ?>


Почему так не работает?
ALEN Отправлено: 28 Июня, 2010 - 15:06:45 • Тема: CLASS метод в методе • Форум: Программирование на PHP

Ответов: 22
Просмотров: 1557
kochan10
Где она создана?

Проблема вообще в этом месте не в классах, а в функциях и их вложенности:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function method1($string){
  3. function method2($string2){
  4. return preg_replace("/2010/isU","2011",$string2);
  5. }
  6. function method4(){
  7. global $var2;
  8. return preg_replace("/2010/isU","2013",$var2);
  9. }
  10. $var2=$string;
  11. echo method2($string)."<br/>".method4();
  12. }
  13.  
  14. method1("PHP is proud to announce TestFest 2010. TestFest is PHP's annual
  15. campaign to increase the overall code coverage of PHP through PHPT tests. During
  16. TestFest, PHP User Groups and individuals around the world organize local events
  17. where new tests are written and new contributors are introduced to PHP's testing
  18. suite.");
  19. ?>
ALEN Отправлено: 28 Июня, 2010 - 14:58:10 • Тема: CLASS метод в методе • Форум: Программирование на PHP

Ответов: 22
Просмотров: 1557
kochan10
В том то и дело...
Нигде не могу найти объяснения...
ALEN Отправлено: 28 Июня, 2010 - 14:56:43 • Тема: PHP Вызов функции класса без приставки $this и прочего • Форум: Программирование на PHP

Ответов: 2
Просмотров: 329
Joo
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class pTest{
  3. public function it($t){
  4. echo($t); exit;
  5. }
  6. }
  7.  
  8. class test extends pTest{
  9. function doTest(){
  10. self::it('Hello');
  11. }
  12. }
  13.  
  14. $ob=new test;
  15. $ob->doTest();
  16. ?>
ALEN Отправлено: 28 Июня, 2010 - 14:31:02 • Тема: CLASS метод в методе • Форум: Программирование на PHP

Ответов: 22
Просмотров: 1557
kochan10
Я понимаю, что если вызывать метод из корня, то все ок и все правильно, но я не нашел, что создание метода в методе - это неправильно...

var1 - посмотрите внимательно объявлена как публичная + внутри самого метода мы придаем значение этому свойству.

PHP:
скопировать код в буфер обмена
  1. public $var1;
  2. ....
  3. $this->var1=$string;


P.S, В качестве подтверждения моих слов перетяните функции из метода в класс и все будет работать...
ALEN Отправлено: 28 Июня, 2010 - 12:35:57 • Тема: CLASS метод в методе • Форум: Программирование на PHP

Ответов: 22
Просмотров: 1557
По логике необходимо сделать метод в методе, но что-то немного туго выходит это, может от перенапряжения я что-то неправильно думаю, но суть такая:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class class1{
  3. public $var1;
  4. function method1($string){
  5. function method2($string2){
  6. return preg_replace("/2010/isU","2011",$string2);
  7. }
  8. function method3(){
  9. return  preg_replace("/2010/isU","2012",$this->var1);
  10. }
  11. function method4(){
  12. global $var2;
  13. return  preg_replace("/2010/isU","2013",$var2);
  14. }
  15.  
  16. $this->var1=$string;
  17. $var2=$string;
  18. echo method2($string)."<br/>".method3()."<br/>".method4();
  19.  
  20. }
  21. }
  22.  
  23. $ob=new class1;
  24. $ob->method1("PHP is proud to announce TestFest 2010. TestFest is PHP's annual
  25. campaign to increase the overall code coverage of PHP through PHPT tests. During
  26. TestFest, PHP User Groups and individuals around the world organize local events
  27. where new tests are written and new contributors are introduced to PHP's testing
  28. suite.");
  29. ?>
  30.  


В данном примере методы 3 и 4 не дают желаемого результата, а 3 метод вызывает фатальную ошибку. Как заставить работать 3 и 4 методы? Если их не писать как вложенные то все отлично, но если ситуация требует вложенности?
ALEN Отправлено: 15 Июня, 2010 - 12:16:42 • Тема: Автомтическое нажатие. • Форум: Программирование на PHP

Ответов: 5
Просмотров: 340
wo0pz

JavaScritp сделайте событие!
ALEN Отправлено: 15 Июня, 2010 - 12:14:17 • Тема: новая строка • Форум: Напишите за меня, пожалуйста

Ответов: 3
Просмотров: 41


замени на

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. echo "<p>".$li ."</p>";
  3.  
ALEN Отправлено: 22 Апреля, 2010 - 16:05:29 • Тема: остаток времени • Форум: JavaScript & VBScript

Ответов: 9
Просмотров: 3623
JustUserR
Полностью поддерживаю, тем более в этом вопросе, где по сути самые основы JavaScript сидят не стоит использовать jQuery
ALEN Отправлено: 22 Апреля, 2010 - 16:01:26 • Тема: Проблема с insert • Форум: Программирование на PHP

Ответов: 54
Просмотров: 3138
viperdev пишет:
Не помогает, все равно записывается только часть данных.


Уже давно посоветовал, если что-то не так как хочется при работе в БД, сам запрос выводите на экран - операция займет 2 секунды, но сразу будет видно какие ошибки в запросе. Даже опытным программистам приходится иной раз так поступать не замечая иной раз самые элементарные ошибки.
ALEN Отправлено: 22 Апреля, 2010 - 15:55:30 • Тема: Обработка содержимого тэгов • Форум: Программирование на PHP

Ответов: 5
Просмотров: 574
Зачем такой гемор:


CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $text = "<h4>text text</h4> <pre>A 'quote' is <b>bold</b></pre> <p>text text text A 'quote' is <b>bold</b> </p><pre>A 'quote' is <b>bold</b></pre>";
  3. function pre_entities($ok) { return "<pre>".htmlentities($ok[1])."</pre>"; }
  4. echo $text = preg_replace_callback('/<pre>(.*)<\/pre>/isU',"pre_entities", $text);
  5. ?>
ALEN Отправлено: 21 Апреля, 2010 - 10:35:43 • Тема: Проблема с insert • Форум: Программирование на PHP

Ответов: 54
Просмотров: 3138
JustUserR
Так вот я пример и описал выше, чтоб люди поняли страшную силу кавычек!
ALEN Отправлено: 21 Апреля, 2010 - 10:31:54 • Тема: array_key_exists • Форум: Напишите за меня, пожалуйста

Ответов: 15
Просмотров: 555
israelin
если две записи , то используйте or и с разных сторон добавляем запятые:

$res = mysql_query("SELECT * FROM `your_table` WHERE `owners` LIKE '%,1' or `owners` LIKE '1,%' ");
ALEN Отправлено: 21 Апреля, 2010 - 10:23:10 • Тема: постраничная навигация на php • Форум: Обсуждение статей

Ответов: 11
Просмотров: 10382
В бщем вопрос такой, Вы умеете например методом GET получить номер текущей страницы? Потом сколько сообщений должно быть на странице определить? А следом посчитать количество страниц в базе?

Если все это можете то проблем не возникнет. Если не знаете, то конкретно разбирайте поставленые вопросы выше.

Не хочу давать вам готовый свой класс, вам стоит самому научится.

Сама картинка такая:
Когда у нас есть количество страниц в базе и мы хотим например выводить 10 сообщений на страницу, то мы просто количество сообщений делим на 10 и округляем в большую сторону. Получаем так число страниц в навигации.

И далее просто пользуемся оператором for и выводим необходимые ссылки.

Из базы MySQL выведем страницы с помощью команды SELECT , но чтоб нам вывести необходимые собщения для определенной страницы, то нам необходимо использовать LIMIT , а в его параметрах указывать первое число, как: (текущая страница умноженная на количество выводимых страниц и отнимаем количество выводимых страниц (например: текущая страница 2 а выводим по 10 новостей, то получается - ((2*10)-10))=10) - т.е. мы указываем что выводить нужно с 10 позиции, а второй параметр LIMIT - указываем сколько строк выводить т.е. в данном случае 10 .
ALEN Отправлено: 20 Апреля, 2010 - 09:03:05 • Тема: Проблема с insert • Форум: Программирование на PHP

Ответов: 54
Просмотров: 3138
CODE (htmlphp):
скопировать код в буфер обмена
  1. mysql_query("INSERT INTO `day_prog` SET `program`='".str_replace("'","\'",$in)."'",$db);


Второй вариант:

CODE (htmlphp):
скопировать код в буфер обмена
  1. mysql_query("INSERT INTO `day_prog` SET `program`='".mysql_escape_string($in)."'",$db);

(Добавление)
chaynyk
Тип поля ничего не даст, TEXT - самый универсальный вариант и больше не нужно, тут проблема именно в экранировании (99%) , я обычно если что-то невнимательно делаю и не экранирую символы сам запрос загоняю в переменную и если неудачная запись, я его вывожу и там разбираю в чем проблема. У автора наверняка есть одинарные ковычки - поэтому их нужно экранировать - в том числе этот способ - мера предосторожности в запросах к БД в SQL-инъекциях.
Пример:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $string="qweewq', `id`='999'";
  2. $insert="INSERT INTO `day_prog` SET `program`='".$in."'";
  3. mysql_query($insert,$db);


Что попадет в БД ??

А вот пример, как раньше можно было взламывать много сайтов:
При авторизации в логин пишем "admin' or '1'='1'" , в поле пароль что угодно вносишь , а вот проверка логина и пароля в движке вот такая:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $insert="SELECT * FROM `day_prog` where `user`='".$_POST['login']."' and `password`='".$_POST['passwd']."'";
  3. mysql_query($insert,$db);


Вот и делайте выводы, какие могут быть непредсказуемости...

Страниц (98): В начало « ... 78 79 80 81 [82] 83 84 85 86 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB