Реально ли найти работу 600-800 $ для начинающего программиста?

dimitrius

Новичок
dimitrius
а вы уверены, что оно вам надо. с основами у вас плохо, особенно для создателя магазина незнание безопасного программирования - смерть. и самое паршивое, что это указывает на то, что вы поленились даже одну толстую книгу прочитать.
работа программиста не самая лёгкая, а зарплата не самая высокая, с вашим экономическим опытом можно найти что-то получше.

а вообще, это конечно возможно, как правило зарплата слабо коррелируется с реальными знаниями. главное умение себя хорошо продавать, что с экономическим образованием получается гораздо лучше.
PHP:
<?php
class String_Safety{
    private $inputString;
    private $handledString;
    private $inspectionResult;
    private $MAX_LENGHT;
    const SUBSTITUTE_CHAR = '';
    public function __construct($inputString = ""){
        $this ->setStringForHendling($inputString);
        $this ->setHandledString("Handling was not carried out");
        $this ->inspectionResult = "Inspection wasn't conducted";
        $this ->MAX_LENGHT = 100;
    }

    public function setStringForHendling($inputString){
        $this ->inputString = $inputString;
    }
    public function setMAX_LENGHT($inputInteger){
        if(intval($inputInteger) === $inputInteger){
            $this ->MAX_LENGHT = intval($inputInteger);
        }
    }
    private function setHandledString($handledString){
        $this ->handledString = $handledString;
    }

    public function getInputString(){
        return $this ->inputString;
    }
    public function getHandledString(){
        return $this ->handledString;
    }
    public function getInspectionResult(){
        return $this ->inspectionResult;
    }

    public function inspectAndReplaceNotDomainSymb(){
        $forbiddenChars = "/[^-._0-9a-zA-Z]/";
        $this ->inspectAndReplace($forbiddenChars, String_Safety::SUBSTITUTE_CHAR);

    }
    public function inspectAndReplaceNotLetterAndNumSymb(){
        $forbiddenChars = "/[^0-9a-zA-Z]/";
        $this ->inspectAndReplace($forbiddenChars, String_Safety::SUBSTITUTE_CHAR);
    }
    public function inspectAndMakeHtmlEntities(){
        $inputString = $this ->getInputString();
        $handledString = htmlentities($inputString, ENT_QUOTES, "UTF-8");
        $this ->setHandledString($handledString);
        $this ->stringInspection();
    }
    public function inspectAndProtectMysqlQuery($connectLink){
        $inputString = $this ->getInputString();
        $forbiddenChars = "/\s+/mu";
        $substitute = ' ';
        $handledString = $this ->replaceForbiddenChar($forbiddenChars, $substitute, $inputString);
        $handledString = mysqli_real_escape_string($connectLink, $handledString);
        $this ->setHandledString($handledString);
        $this ->stringInspection();
    }
    private function inspectAndReplace($forbiddenChars,$substitute){
        $stringWhereNeedReplace = $this ->getInputString();
        $handledString = $this ->replaceForbiddenChar($forbiddenChars, $substitute,
                                                      $stringWhereNeedReplace);
        $this ->setHandledString($handledString);
        $this ->stringInspection();
    }
    private function stringInspection(){
        $stringsAreSame = (strcmp($this ->inputString, $this ->handledString) === 0);
        $stringLenghtAreCorrect = (strlen($this ->inputString) <= $this ->MAX_LENGHT);
        if($stringsAreSame && $stringLenghtAreCorrect){
            $this ->inspectionResult = TRUE;
        }
        else {
            $this ->inspectionResult = FALSE;
        }
    }
    private function replaceForbiddenChar($forbiddenChars, $substitute, $inputString){
        $safeString = preg_replace ($forbiddenChars,
                                    $substitute,
                                    $inputString);
        return $safeString;
    }

    function __destruct(){
        unset($this ->inputString);
        unset($this ->handledString);
        unset($this ->inspectionResult);
        unset($this ->MAX_LENGHT);
    }
}
?>
моя стряпня
 

Breeze

goshogun
Команда форума
Партнер клуба

dimitrius

Новичок
А вообще, буду учится на своих проектах дальше. Согласен, что база знаний стремится к нулю, но... жизнь покажет. За возврат в реальность спасибо.
 

dimitrius

Новичок
PHP:
public function query($sql, $data = NULL){
        $connectLink = $this ->getConnectLink();
        $pattern = '/\?[^\?]*\?/';
        $safeSql = $sql;
        if(NULL === $data){
            $this ->setLastQuery($safeSql);
            $queryResult = @mysqli_query($connectLink, $safeSql);
        } elseif(is_string($data)){
            $stringCorrection = new String_Safety();
            $stringCorrection ->setStringForHendling($data);
            $stringCorrection ->inspectAndProtectMysqlQuery($connectLink);
            $safeData = $stringCorrection ->getHandledString();
            $safeQuery = preg_replace($pattern, $safeData, $safeSql);
            $this ->setLastQuery($safeQuery);
            $queryResult = @mysqli_query($connectLink, $safeQuery);
        } elseif(is_array($data)){
            $stringCorrection = new String_Safety();
            $safeQuery = $safeSql;
            foreach ($data as $dataValue){
                $stringCorrection ->setStringForHendling($dataValue);
                $stringCorrection ->inspectAndProtectMysqlQuery($connectLink);
                $safeDataValue = $stringCorrection ->getHandledString();
                $safeQuery = preg_replace($pattern, $safeDataValue, $safeQuery, 1);
            }
            $this ->setLastQuery($safeQuery);
            $queryResult = @mysqli_query($connectLink, $safeQuery);
        } else{
            $errorMessage = 'Не вірний тип другого параметеру query()!';
            $this ->mysqlError($errorMessage);
            $queryResult = FALSE;
        }
        if(FALSE !== $queryResult){
            $this ->setQueryResult($queryResult);
            return TRUE;
        } else{
            $errorMessage = 'Помилка при запиті до бази даних! ';
            $this ->mysqlError($errorMessage);
            return FALSE;
        }
    }
у себя я проверки стараюсь делать, все зависит от задачи и степени доверия данным
 

AmdY

Пью пиво
Команда форума
но... жизнь покажет. За возврат в реальность спасибо.
Вы не правильно поняли, знания у вас, конечно, куцые, но это никак не мешает вам заполучить подобную сумму. Здесь сидят ребята которые на голову сильнее тех. директоров 80% компаний, что в тоже время не мешает этим компаниям успешно развиваться и зарабатывать большие деньги. Так что у вас хорошие шансы пройти собеседование.
 

zerkms

TDD infected
Команда форума
у себя я проверки стараюсь делать, все зависит от задачи и степени доверия данным
Применение функций экранирования НИКАК не связано с доверием к данным. Их нужно применять ВСЕГДА
 

dimitrius

Новичок
Вы не правильно поняли, знания у вас, конечно, куцые, но это никак не мешает вам заполучить подобную сумму. Здесь сидят ребята которые на голову сильнее тех. директоров 80% компаний, что в тоже время не мешает этим компаниям успешно развиваться и зарабатывать большие деньги. Так что у вас хорошие шансы пройти собеседование.
С этим я больше чем согласен(хотя согласен или нет знаний не добавляет). Но как самому добыть необходимые знания я вижу два пути:
1. Работать в компании над проектами и получать опыт и знания от более компетентных сотрудников.
2. Делать собственные проекты(обезьянничать), и по мере возникновения вопросов получать дополнительные знания.
1-й вариант быстрее и дает результат и денежное вознаграждение уже.
2-й вариант длинный, много проб и ошибок - результат неизвестен.
 

Redjik

Джедай-мастер
dimitrius
Думаю уже можно, надеюсь fixxxer не против =)

1) mysql староват - лучше (mysqli или PDO)
2) Нет валидации $_POST, делаем prepared
3) Невалидный html </br> <input />

-а если есть только mysql-расширение, ну вот так вышло - что делать?

sprintf тогда и mysql_real_escape_string
+ еще закрытие коннекта и все что парень перечислил по поводу подключения к бд
<?php не закрытый это наоборот нормально

+warning undefined variable
вначале $logged_in = false
или
PHP:
    if (mysql_num_rows($q)) {
        $logged_in = true;
    }else{
 $logged_in = false;
}
Дальше сдался =))))
 

Redjik

Джедай-мастер
dimitrius
3ий вариант, взять хороший фреймворк (самый крутой код ИМХО сейчас у второй Symfony), и делать проэкты на нем, разбирая по винтику сам фреймворк, докапываясь до самых,казалось бы, неважных мелочей, находить в нем пэттерны проектирования.
+ постоянно общаться на форуме, прислушиваться к мнениям людей с бОльшим опытом... и самое главное ВСЕГДА считать, что ты мало знаешь.
 

dimitrius

Новичок
1) mysql староват - лучше (mysqli или PDO) - субъективно.
2) Нет валидации $_POST, делаем prepared - об этом я сказал
3) Невалидный html </br> <input /> - согласен, не заметил

sprintf тогда и mysql_real_escape_string - это проверка безопасности, а не работоспособности кода(неправильно понял задание)
+ еще закрытие коннекта и все что парень перечислил по поводу подключения к бд - в данной ситуации нет необходимости, после завершения скрипта коннект закрывается автоматически.
<?php не закрытый это наоборот нормально - интересно?

+warning undefined variable
вначале $logged_in = false - об этом я сказал
 
Сверху