[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Стажер php программист
justyork
Здравствуйте, имею небольшой опыт по программированию на php и хотелось бы улучшить свои знания.

В данный момент времени много.

Прошел курсы "PHP за 2 недели" и "профессионал php" (1 месяц курса вебгуру). Д. Ляпина и А. Никитина.

Знаком с MVC и ООП, немного знаком с коханой.

В данный момент изучаю второй месяц обучения. JSW, ajax, flex, action-script и тд.

В качестве ДЗ было написать фото галерею, с загрузкой и с сохранением основной и уменьшенной копии.
Во втором проекте было создание блога с пользователями, статьями, сессиями и тд.

Все вопросы и предложения присылать:

E-mail: kto-to-tut(сбк)inbox(тчк)ru (предпочтительно)
icq: 640109249
skype: paradox349518

Буду рад работать с человеком, знающим свое дело.



Спустя 1 минута, 57 секунд (4.10.2011 - 13:54) Michael написал(а):
Какое образование? Возраст? О/Р в программировании ?

Спустя 7 минут, 6 секунд (4.10.2011 - 14:01) justyork написал(а):
Образование хореография. Возраст 19. О/Р - это что? Если опыт работы то с html - 3 года css - пол года, php - 1,5 месяца.

Но обучаюсь быстро.

Спустя 1 минута, 7 секунд (4.10.2011 - 14:02) Michael написал(а):
Цитата (justyork @ 4.10.2011 - 13:01)
Образование хореография.

laugh.gif

Спустя 1 минута, 38 секунд (4.10.2011 - 14:03) justyork написал(а):
Да знаю, просто произошло несколько неприятных моментов, после чего стало тяжело танцевать... sad.gif

Спустя 5 минут, 27 секунд (4.10.2011 - 14:09) m4a1fox написал(а):
А насколько ООП знаете?

Спустя 2 минуты, 8 секунд (4.10.2011 - 14:11) Winston написал(а):
Цитата (justyork @ 4.10.2011 - 14:01)
php - 1,5 месяца

Цитата (m4a1fox @ 4.10.2011 - 14:09)
А насколько ООП знаете?

ohmy.gif
Он и не слышал об этом походу...

Спустя 2 минуты, 53 секунды (4.10.2011 - 14:14) Michael написал(а):
Цитата (m4a1fox @ 4.10.2011 - 13:09)
А насколько ООП знаете?

ты бы еще спросил какие фреймворки и цмс он знает... wink.gif .

Спустя 1 минута, 40 секунд (4.10.2011 - 14:16) justyork написал(а):
Пока относительно. Немного разобрался с классами но пока мало понимаю про конструктор и деструктор, только то, где их объявлять. Так же знаю про singtone как делается и для чего нужен.

Фреймвор я написал, что немного знаком с коханой, cms на уровне пользователя wordpress, dle, joomla, так же занимался seo, но это уже из другой сказки.

так же на занятиях делали mvc + ооп.

Спустя 2 минуты, 9 секунд (4.10.2011 - 14:18) Winston написал(а):
Цитата (justyork @ 4.10.2011 - 14:16)
Так же знаю про singtone

А что это ?

Спустя 17 секунд (4.10.2011 - 14:18) Michael написал(а):
Цитата (justyork @ 4.10.2011 - 13:16)
но это уже из другой сказки.

из сказки-страшилки. Немного знать - это как - вообще не знать и ничего не уметь?

Спустя 11 секунд (4.10.2011 - 14:18) m4a1fox написал(а):
Winston
Michael
Ну не знаю! Вот тут написано так!
Цитата
Знаком с MVC и ООП, немного знаком с коханой.
Я и подумал!!! просто 1,5 месяца! И такие обширные познания! Ну не знаю, видимо это я тугой! smile.gif

Спустя 1 минута, 26 секунд (4.10.2011 - 14:20) m4a1fox написал(а):
Winston
Цитата
Цитата
Так же знаю про singtone


А что это ?

И все то он видит smile.gif

Спустя 27 секунд (4.10.2011 - 14:20) Winston написал(а):
Цитата (m4a1fox @ 4.10.2011 - 14:18)
просто 1,5 месяца! И такие обширные познания! Ну не знаю, видимо это я тугой

Все, это первый претендент на должность программиста для написания вашей соцсети biggrin.gif
Или уже загнулась ваша "соцсеть" ? smile.gif

Спустя 1 минута, 31 секунда (4.10.2011 - 14:22) justyork написал(а):
singtone - шаблон одиночка, предназначенный для кэширования запросов к модулям или драйверам.

СЕО занимаюсь 5 месяцев. Плюс веду блог.

Да и в рамках тренинга вебгуру нужно сделать соцсеть. Так что можно сказать работаю над этим.

Спустя 1 минута, 8 секунд (4.10.2011 - 14:23) m4a1fox написал(а):
Цитата
шаблон одиночка, предназначенный для кэширования запросов к модулям или драйверам.

Нет! Это что то другое! Я вам точно говорю! smile.gif

Спустя 29 секунд (4.10.2011 - 14:23) Invis1ble написал(а):
justyork
Цитата
предназначенный для кэширования запросов к модулям или драйверам.

а своими словами?

Спустя 1 минута, 26 секунд (4.10.2011 - 14:25) Winston написал(а):
Цитата
singtone - шаблон одиночка, предназначенный для кэширования запросов к модулям или драйверам.

Вау, вы свой шаблон придумали !? smile.gif

Спустя 17 секунд (4.10.2011 - 14:25) m4a1fox написал(а):
О! Я знаю что такое singtone

Итак, singtone - это тональность одной песни в децебеллах(или как их там)

Спустя 46 секунд (4.10.2011 - 14:26) Michael написал(а):
Цитата (m4a1fox @ 4.10.2011 - 13:18)
Ну не знаю, видимо это я тугой! smile.gif

вполне может быть. Смотри обгонит плясака тебя, ты ведь типа журналист, более эрудирован должен быть, лезя в программирование. Поднатужся. laugh.gif

Спустя 48 секунд (4.10.2011 - 14:26) Winston написал(а):
Michael
laugh.gif laugh.gif laugh.gif

Спустя 1 минута, 6 секунд (4.10.2011 - 14:28) m4a1fox написал(а):
Michael
Цитата
Поднатужся

А то как же! Вот сижу параллельно Мэтта Зандстру читаю! Занимательно! smile.gif

Спустя 49 секунд (4.10.2011 - 14:28) justyork написал(а):
Я как раз и сказал своими словами. Нам это объясняли так. создается в модуле статическая функция и вызывается во всех контролерах вот таким образом
$mUsers = M_Users::Instance();


сама функция
public static function Instance()
{
if (self::$instance == null)
self::$instance = new M_Users();

return self::$instance;
}

Спустя 1 минута (4.10.2011 - 14:29) Winston написал(а):
Цитата (justyork @ 4.10.2011 - 14:28)
вызывается во всех контролерах

Зачем во всех ? smile.gif

Спустя 1 минута, 9 секунд (4.10.2011 - 14:31) m4a1fox написал(а):
Winston
Цитата
Зачем во всех ?

Это что б уж точно наверняка!

Спустя 32 секунды (4.10.2011 - 14:31) justyork написал(а):
Цитата
Зачем во всех ? smile.gif


Во всех в каких нужно

Спустя 12 минут, 20 секунд (4.10.2011 - 14:43) m4a1fox написал(а):
Ну так что, мое определение singtone верно?
Цитата

singtone - это тональность одной песни в децебеллах(или как их там)

Спустя 2 минуты, 33 секунды (4.10.2011 - 14:46) justyork написал(а):
Цитата
Ну так что, мое определение singtone верно?



В какой-то мере, но я вот про этот Singltone говорю

Спустя 1 минута, 39 секунд (4.10.2011 - 14:48) Winston написал(а):
Цитата (justyork @ 4.10.2011 - 14:46)
но я вот про этот Singltone говорю

Ну это Singleton, а ты говорил Singtone smile.gif

Спустя 2 минуты, 30 секунд (4.10.2011 - 14:50) justyork написал(а):
ммм...да... не правильно написал sad.gif

Спустя 6 минут, 31 секунда (4.10.2011 - 14:57) Invis1ble написал(а):
m4a1fox
приставки деце- нет, есть деци-, к тому же еще и с двумя "л" написал - http://ru.wikipedia.org/wiki/Децибел


 ! 

М
Народ, хватит флеймить.
Думаю ТС создал тему не для болтовни.
Invis1ble

Спустя 52 минуты, 5 секунд (4.10.2011 - 15:49) m4a1fox написал(а):
Invis1ble
Цитата
приставки деце- нет, есть деци-, к тому же еще и с двумя "л" написал

Так я и не утверждал! Если заметили, там была страховка в виде фразы (как-то так) smile.gif

Спустя 2 часа, 21 минута, 14 секунд (4.10.2011 - 18:10) alexbel2404 написал(а):
Цитата (justyork @ 4.10.2011 - 11:22)
singtone - шаблон одиночка, предназначенный для кэширования запросов к модулям или драйверам.

СЕО занимаюсь 5 месяцев. Плюс веду блог.

Да и в рамках тренинга вебгуру нужно сделать соцсеть. Так что можно сказать работаю над этим.

ну раз одиночка, тогда singleton )

и совет, не берись изучать за все сразу, все перемешается)

upd. опять я не заметил след. страницы smile.gif

Спустя 10 минут, 47 секунд (4.10.2011 - 18:21) alex12060 написал(а):
Чую некоторым людям нужно на аву ставить вот эту картинку:

Свернутый текст
user posted image


Ну не мог сдержаться, извините за оффтоп.

В целом, очень не плохие курсы у веб-гуру. Советую таких людей держать под крылом smile.gif

Спустя 32 минуты, 54 секунды (4.10.2011 - 18:54) justyork написал(а):
Цитата (alexbel2404 @ 4.10.2011 - 23:10)
 
и совет, не берись изучать за все сразу, все перемешается)


Я и не стремлюсь все сразу, я изучаю все постепенно, почти так же как и в курсах, только быстрее немного. сейчас сижу пытаюсь с дз по java script разобраться.

Спустя 10 минут, 54 секунды (4.10.2011 - 19:05) justyork написал(а):
Цитата
Чую некоторым людям нужно на аву ставить вот эту картинку:

Свернутый текст
user posted image

Это мне?

Спустя 27 минут, 45 секунд (4.10.2011 - 19:32) imbalance_hero написал(а):
justyork
Нет, троллям в этой теме, которые пытались затроллить тебя. Я приму меры к данным людям.
А в целом, желаю удачи найти что-то. В крайнем случае можешь взять пару бесплатно-копеечных заданий на фрилансе, поучаствовать в наших конкурсах, чтобы набраться опыта.
Будет опыт, будет хоть МАЛЕНЬКОЕ портфолио, найти работу будет куда проще.

Спустя 6 минут, 28 секунд (4.10.2011 - 19:39) justyork написал(а):
Я смотрел на фрилансе заказы, но там мало что понятно, я и хочу найти человека, с которым можно работать над каким то проектом и который сможет ответить на вопросы и тд.
Искал устроиться в оффлайне стажером, но в моем городе таких вакансий нет...

А что у вас за конкурсы?

Спустя 16 минут, 35 секунд (4.10.2011 - 19:55) imbalance_hero написал(а):
http://phpforum.ru/index.php?showforum=133 - тут конкурсы.
Ты не в газете ищи, а сами фирмы найди и скинь на ящик своё резюме, может быть и откликнутся.

Спустя 12 часов, 8 минут (5.10.2011 - 08:03) Michael написал(а):
Цитата (justyork @ 4.10.2011 - 17:54)
Я и не стремлюсь все сразу, я изучаю все постепенно, почти так же как и в курсах, только быстрее немного. сейчас сижу пытаюсь с дз по java script разобраться.

Тебе надо отходить от этого - домашнее задание и т.д. Это несерьезно. Платят только за результат. Насчет тебя - вообще непонятно умеешь ли ты минимально программировать. Не знать немного php, а именно программировать.
В своем обучении не гонись за воздушными замками, а нацеливайся на реальные требования. На сайтах где предлагают работу смотри требования. Для постоянки - одно, для удаленки - второе, для фриланса - третье.

Вот эта задача должна быть тебе полезна. Ее тут многие выполняли.

Спустя 1 час, 41 минута, 8 секунд (5.10.2011 - 09:44) justyork написал(а):
Цитата (Michael @ 5.10.2011 - 13:03)

Вот эта задача должна быть тебе полезна. Ее тут многие выполняли.


Интересная задачка, сейчас сделаю. А кому решение давать?

Цитата
Тебе надо отходить от этого - домашнее задание и т.д. Это несерьезно.


Эти задания, помогают мне самому искать нужную информацию, и получать хоть какую-то практику программирования.

Спустя 3 часа, 30 секунд (5.10.2011 - 12:45) imbalance_hero написал(а):
justyork
В разделе "Оцените", или в разделе "новички". Там мы посмотрим, можешь даже тут выставить.

Спустя 1 час, 29 минут, 14 секунд (5.10.2011 - 14:14) justyork написал(а):
Такой вопрос, защита от f5 это про добавление пользователя при обновлении?
И имя пользователя может повторяться или только по 1 уникальному имени?

Спустя 7 минут, 14 секунд (5.10.2011 - 14:21) Michael написал(а):
Защита от f5 - это чтобы не получилось так, что пользователь жмякнет F5 и повторится предыдущее действие - добавление пользователя например(что уже произошло).

Имя может повторяться. Если бы не могло - это было бы в "Требованиях".

Спустя 2 часа, 29 минут, 11 секунд (5.10.2011 - 16:51) justyork написал(а):
Потчи все готово, только вопрос, можно-ли использовать java script или обойтись только одним пхп.
Проблемы с защитой от обновления:)

И объясните про xss.

А sql инъекция это защита от передачи ненужных данных через пост или гет?

Спустя 48 минут, 53 секунды (5.10.2011 - 17:39) Invis1ble написал(а):
sql-инъекция - это вид атаки, когда внедряется sql-код в тело запроса
xss - аналогично, только внедряютя скрипты в html

Спустя 1 час, 20 минут, 39 секунд (5.10.2011 - 19:00) justyork написал(а):
Сделал, но у меня проблема с header, не могу понять, куда его вставить. По идее нужно ставить после передачи данных. Я убивал скрипт и вызывал хедер, но все равно не работало. Поэтому я написал на js редирект на главную страницу после регистрации

Config.php

Свернутый текст
<?  
$hostname = 'localhost';
$username = 'root';
$password = '';
$dbName = 'names';

// Подключение к БД.
mysql_connect($hostname, $username, $password) or die('No connect with data base');
mysql_select_db($dbName) or die('No data base');



function.php

Свернутый текст
<?  
require_once ('config.php');


// Функция для выборки строк
// Результат - массив выбранных объектов

function Select($query)
{
$result = mysql_query($query);

if (!$result)
die(mysql_error());

$n = mysql_num_rows($result);
$var = array();

for ($i = 0; $i < $n; $i++)
{
$row = mysql_fetch_assoc($result);
$var[] = $row;
}

return $var;
}

// Регистрация
function registr ($reg)
{
if ($_POST['reg'])
{
$reg = preg_replace("/ +/", " ", trim($reg));

// Различные проверки
if (empty($reg))
die('Поле не может быть пустым');
if (strlen($reg) >= 250)
die('Длинна не может превышать 250 символов');

$name = htmlspecialchars($_POST['reg_text'], ENT_QUOTES);
$query = "INSERT INTO names (name) VALUE ('$name')";
$result = mysql_query($query);

if (!$result)
die(mysql_error());
}
}


// Получение пользователя
function Get($id_user)
{
// Берем пользователя по id.
$t = "SELECT * FROM names WHERE id = '%d'";
$query = sprintf($t, $id_user);
$result = Select($query);
return $result[0];
}

// Список всех пользователей
function ShowList ()
{
$query = "SELECT * FROM names ORDER BY id DESC";
$result = Select($query);
return $result;
}

// Функция поиска
function Search ($search)
{
// Проверки
if (empty($search))
die('Поле не может быть пустым');
if (strlen($search) > 250)
die('Длинна не может превышать 250 символов');
$ser = trim(htmlspecialchars($search, ENT_QUOTES));

$query = "SELECT * FROM names WHERE name LIKE '%" . mysql_real_escape_string (addcslashes ($ser, "_%")) . "%' ORDER BY name";
$result = Select($query);

return $result;
}


index.php

Свернутый текст
<?require_once ('function.php')?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>
Пользователи</title>
</head>
<body>
<h2><a
href="index.php">Главная</a></h2>


<?
/*****Поиск******/?>
<?
if ($_POST['search']) : ?>
<?
$srch = Search($_POST['search_text'])?>
<?
foreach ($srch as $sr) : ?>
<li><?=
$sr['name']?></li>
<?
endforeach?>
<?
endif?>


<?
/******Регистрация******/?>
<?
if ($_POST['reg']) : ?>
<?
registr($_POST['reg_text'])?>
<?
/* Редирект */?>
<script
type="text/javascript">
location="<?=$_SERVER[PHP_SELF]?>";
</script>
<?
endif?>

<form
method="post">
<h3>
Регистрация</h3>
<input
type="text" name="reg_text"/>
<input
type="submit" value="Регистрация" name="reg"/><br />
<h3>
Поиск</h3>
<input
type="text" name="search_text" />
<input
type="submit" value="Найти" name="search"/>
</form> <br /><br />


<?
/*****Вывод пользователя при существовании id******/?>
<?
if($_GET['id']) : ?>
<?
$userId = Get($_GET['id'])?>
<div
align="center" style="border: 1px solid;">Пользователь под именем <font color="red"><b><?=$userId['name']?></b></font>, зарегистрировался -<b> <?=$userId['date']?></b></div>
<?
endif?>


<?
/*****Список всех пользователей******/?>
<ul
type="square">
<?
$name = ShowList()?>
<?
foreach ($name as $user) : ?>
<li><a
href="index.php?id=<?=$user['id']?>"> <?=$user['name']?> </a></li>
<?
endforeach?>
</ul>

</body>
</html>


Спустя 15 часов, 31 минута, 14 секунд (6.10.2011 - 10:31) Michael написал(а):
1) Используй полный синтаксис тега php - <?php
2) Включи у себя показ ошибок - сразу все станет видно. Имеем три нотиса.
Первый:
Notice: Undefined index: search in C:\WWW\htdocs\7\index.php on line 13
Почему?
Потому что так
if ($_POST['search'])

нельзя писать. Надо
if (isset($_POST['search']))

3) Функция Get
Если параметр - число, то не надо в кавычки заключать
 $t = "SELECT * FROM names WHERE id = '%d'";

Проще делается так:
$t = "SELECT * FROM names WHERE id = " . (int) $id_user; 

4) Функция Select не нужна. Запрос на месте сразу обрабатывают, а не через вспомогат массив.
Плюс неверно внутри. Так перебирается результат:
   while ($row = mysql_fetch_assoc($res)) {
// что то с текущей строкой $row делаем
}

4) Регистрация.
На javascript что ты сделал, не работает - ошибка(Use of undefined constant PHP_SELF - assumed 'PHP_SELF')
Т.к. вместо $_SERVER[PHP_SELF] надо $_SERVER['PHP_SELF']
Вообще редирект делается функцией php - header, а не яваскриптом
5) Данные в базу сохраняешь в корне неверно. Ты их искажаешь htmlspecialchars-ом
Регаю M'123, в базе - M&#039;123. Соответственно в поиске мне найдет пользователя 039.
Данные в базе должны быть те, что вводишь, чистые данные, а htmlspecialchars - только при выводе в браузер.
6) При попытке регистрации \\\ - при отключенных магических кавычках - Ошибка. А при регистрации \\ - получается - \
Это все из-за неверного ввода данных в БД. Используй mysql_real_escape_string.
Плюс в условиях задачи было - учитывать магические кавычки, а ты вообще их игнорируешь
7) Поиск неверно работает для следующего пользователя - \% (при отключ. маг. кав.)
Такая строка поиска - \' неверно ищет (при отключ. маг. кав.)
8) Пользователь с неск. пробелами в имени отображается в браузере как с одним
9) Сразу привыкай работать в кодировке utf-8, а не в той что ты. Для утф-8 не strlen, а mb_strlen и т.д.
10)
Цитата
Требования:
3. При осуществлении поиска слово, набранное в поле, должно возвращаться обратно в форму.

ты этого не сделал
11)
Цитата
Требования:
4. Форма поиска должна отправляться методом GET

у тебя - POST

p.s. В целом, ну очень слабенько, задача не решена.

Спустя 5 минут, 46 секунд (6.10.2011 - 10:37) justyork написал(а):
Ох жесть, а у меня все нормально работало( Про возвращение имени забыл...

Вывод ясен, хреновый из меня программист(

Спустя 8 минут, 27 секунд (6.10.2011 - 10:46) Michael написал(а):
Цитата
Вывод ясен, хреновый из меня программист(

Не надо спешить с выводами. Начинающий изучать php из тебя программист. Это - да. Эти ошибки - от неопытности. В целом мне код чем то даже и приглянулся. Понятностью что ли, стилем. Работает/неРаботает, корректен/неКорректен - это вопрос качества тестирования. Я все ключевые моменты проверил - и сразу поднял все проблемы.
Основных грубейших ошибок две:
1) невыполнение требований(то, что красным)
2) принятие решения об искажении данных при хранении в базе.

От этого и остальное все потянулось.

Спустя 1 минута, 12 секунд (6.10.2011 - 10:47) m4a1fox написал(а):
justyork
Цитата
Вывод ясен, хреновый из меня программист(

Не растраивайся!Ё smile.gif Все так начинали! Сразу, по секрету скажу, ни у кого не получается! А ты думал, что все знаешь! Но это не так! smile.gif Тут большинство таких, и я в том числе!

Спустя 8 минут, 57 секунд (6.10.2011 - 10:56) justyork написал(а):
Не спорю пару пунктов не сделал/понял, исказил в бд специально, но при поиске тоже указал изменение, чтобы результаты были нормальные.

Сейчас взяли в команду, соц сеть делать, надеюсь там научусь)

Спустя 38 секунд (6.10.2011 - 10:56) Winston написал(а):
Цитата (m4a1fox @ 6.10.2011 - 10:47)
А ты думал, что все знаешь

Так все думают, пока время не доходит до кодинга smile.gif

Спустя 12 минут, 32 секунды (6.10.2011 - 11:09) justyork написал(а):
Цитата
А ты думал, что все знаешь


Я прекрасно понимаю, что я мало чего знаю, хоть и изучил дофига. Ведь одно дело изучить, а другое все это реализовать

Спустя 1 день, 3 часа, 6 минут, 39 секунд (7.10.2011 - 14:16) m4a1fox написал(а):
justyork
Цитата
хоть и изучил дофига

Я бы не бросался, такими выражениями smile.gif

Спустя 2 дня, 5 часов, 49 минут, 31 секунда (9.10.2011 - 20:05) justyork написал(а):
Изучил, не значит выучил.

Спустя 1 час, 44 минуты, 37 секунд (9.10.2011 - 21:50) alexbel2404 написал(а):
Цитата (justyork @ 9.10.2011 - 17:05)
Изучил, не значит выучил.

выучил, не значит понял =)

Спустя 3 минуты, 34 секунды (9.10.2011 - 21:53) imbalance_hero написал(а):
justyork
Запомнил термин, а понимать не понимаешь smile.gif Вообщем, тебе выше написали исправления скрипта, переписывай. Как исправишь, пройдемся далее smile.gif

Спустя 8 часов, 34 минуты, 15 секунд (10.10.2011 - 06:27) justyork написал(а):
Подскажите какими способами проверять защищенность? от хсс вводить в адресную строку, и в поля, какие-то теги и скрипты, от sql инъекций, запросы в бд, а от кавычек как проверять? нормально ли они поступают в бд?

Спустя 4 часа, 30 минут, 44 секунды (10.10.2011 - 10:58) l@pteff написал(а):
Перед помещением в базу обрабатывай данные функцией mysql_real_escape_string(). Для магических кавычек на всякий случай можно прописать:

foreach ($_POST as $val)
if (get_magic_quotes_gpc()) {
$val = stripslashes($val);
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.