За последние 24 часа нас посетили 16528 программистов и 1569 роботов. Сейчас ищут 943 программиста ...

Новичек и много вопросов

Тема в разделе "PHP для новичков", создана пользователем General_App, 3 июл 2016.

  1. General_App

    General_App Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    51
    Симпатии:
    1
    Изучаю пхп, и делаю пытаюсь, игру типа - есть много мелких вопросов чтоб код потом не переписывать.
    Потому что чет меня стремает что быдло код пишу.
    1. Хтмл чистого нет все через php даже формы

    PHP:
    1. IF ($bild_tip==2){
    2. Echo "Введите название лаборатории<br>";
    3. Echo "<form action='/bild.php?bild_tip=$bild_tip' method='POST'>
    4. <tr>
    5. <textarea name='bild_name' id='bild_name' rows='1' maxlength='24' cols='24'>$FabrikFactory</textarea><br>
    6. <td colspan='2'><input type='submit' value='отправить' name='submit' ></td><br>";    
    7. }
    2. инклуды тянут, где можно так вписать лучше так вставку делать
    3.
    PHP:
    1. Echo"$v";   or Echo $v;
    4.
    PHP:
    1. Echo "fdgdfgdf":
    2. Echo "fdgdfgdf":
    3. Echo "fdgdfgdf":   OR
    4. Echo " fdgdfgdf
    5.                fdgdfgdf
    6.              fdgdfgdf ";
    5. Длина переменой не должна быть большой как и в БД
    6. Длина полей в БД должна быть как можно меньше (варчар 500 or 24) символа
    7. Спрайты грузить быстрей через имя с пхп чем с БД полностью грузить картинку (32х32)
    8. Защита
    PHP:
    1. $bild_tip = $_GET['bild_tip']; settype($bild_tip,'integer'); (цифры)
    2.                       $bild_name = $_POST['bild_name'];
    3.                     $bild_name = $db->real_escape_string(strip_tags($bild_name));
    (всяко)

    9. Ваши советы мелкие и подводные камни. ( на майсикьюли переписал все)
    10. БД соединение-процессы и вопросы? Так и не нашел конкретного ответа
    11-15 резерв
    PS: Спасибо
     
    #1 General_App, 3 июл 2016
    Последнее редактирование: 3 июл 2016
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    вопросы-то собственно где?
     
  3. General_App

    General_App Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    51
    Симпатии:
    1
    Сверху по пунктам вообще то, сможешь проконсулЬтировать
    Я думаю и так было понятно что я имел ввиду э то просто наверно был ритарически вопрос
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Пункт 0. Русский язык. Школьный курс.
     
  5. General_App

    General_App Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    51
    Симпатии:
    1
    По делу подскажи, а не мою грамотность проверяй
    А не топик удали, и стебаться модерам так нельзя. Мы тут не русский язык учим.
    Да и я хахол
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    1. лучше данный вообще от логики отделить. если не получается то лучше по возможности хтмл выводить вне режима пхп.
    2. ААААААААААААААААААААААААААААААААААААААА?
    3. подставить значение в строку и показать ПРОТИВ показать значение. ну процессоры современные пи3дец какие мощные поэтому канешн первый вариант твоё всё. но глупо.
    4. вывести три раза в поток последовательность символов ПРОТИВ вывести последовательность символов среди которых есть перевод на новую строку. ну ты сам-то видишь разницу между формулировками или надо подсказать?
    5. ААААААААААААААААААААААААААААААААААААААА?
    6. смотря каких полей.
    7. ААААААААААААААААААААААААААААААААААААААА?
    даже не так.
    ААААААААААААААААААААААААААААААААААААААА?
    8. кастовать можно иначе. эскейпить можно без лишних переменных.
    9. ААААААААААААААААААААААААААААААААААААААА?
    10. ААААААААААААААААААААААААААААААААААААААА?
    11-15. ЖДЁМ

    а русский ты учить потому что сложно понимать когда вот такие вот потока мысль вот лезет что это яблочко трактор помидор дверь вот так где ошибка есть разве ты это мне синий черный италия выиграла германия пенальти проиграло разве да германия можно читать когда я формулу смотрю твой собеседник не только русский не знает футболом не интересуюсь но и мысли формулировать не умеет по моему это отвратительно
    --- Добавлено ---
    грамотность у тебя стремится к нулю. нечего проверять того чего нет. увы.
     
    mr.akv нравится это.
  7. General_App

    General_App Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    51
    Симпатии:
    1
    2. Если есть возможность, удобно код не подключать через инклуд. А прописать в основном файле то лутчеше прописать на месте а не вызывать через инклуд
    5. Читал где то что
    лучше $dsf Чем $dsffffffffsf fsfsdfsdfsdfsdfsdffsdfsdfsd
    типа жрет оперативку или проц нагружает
    7, Быстрей название спрайта загрузить из БД и вывести через пхп <img картинка та та> или хранить картину в БД и выводить ее
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    2. должен быть какой-то баланс. да, подключение затратная операция, даже если опкод кэшируется, но и перегружать файл кодом, который не используется, тоже не нужно - его ж его надо в озу развернуть.
    5. переменная должна называться так чтоб программист понял её назначение.
    7. конечно для веб-сервера получив запрос прочитать статику из файловой системы быстрее чем получив запрос запустить пхп-машину, подключиться к субд, спозиционироваться на кортеже и вычитать (по сути из файла) его содержимое в поток вывода.
     
    General_App нравится это.
  9. General_App

    General_App Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    51
    Симпатии:
    1
    Во это четкие ответы спасибо, а по
    5. пункту чем меньше длина тем лучше так где то читал,
    Значит ВЦ читал а я $ поменьше делаю
    А защита пойдет или отстой?
    Стоит подключить функцию которая вырезает с строки слова типа SELECT ну и тд или это лишнее
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    имя переменной на этапе компиляции заменится адресом ячейки памяти а он фиксированной длины. поэтому именовать переменные надо так чтоб человеку который читает код было понятно что в переменной хранится
    --- Добавлено ---
    про защиту не очень понял. я уже ответил что каст можно иначе делать и для эскейпа не объявлять лишних переменных. дальше от тебя зависит понял ты это или нет.
    про функцию отрезающую селект тоже не понял. ты мог бы на русском языке свои мысли выражать а не где-то в своей голове оставлять подробности?
     
  11. General_App

    General_App Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    51
    Симпатии:
    1
    типа такой $a Гет или пост предается
    $a= иньекция
    $stop = array("SELECT","UPDATE");
    $а = str_replace($stop, $t, $a);
    Эт так навскидку
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    не, плохая мысль.
     
  13. General_App

    General_App Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    51
    Симпатии:
    1
    А чего плохая мысль?, Так я не чему не научусь да-нет, хоть примерно описал бы чего,
    Ну вырежет все запросы к БД потом через естап и стриг тапс
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Ну какие есть варианты почему это плохая мысль? Программирование можно и без чужих подсказок освоить. Главное головой думать, а не тупо жрать в неё.
     
  15. General_App

    General_App Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    51
    Симпатии:
    1
    Лишнии затраты ресурсов тк как есть магические кавычки
    Чет не то но суть экранизировать кавычки как то так чет я много вц начитал и щас каша
     
  16. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    каким местом магические кавычки замешаны в твоем желании резать слова селект и апдейт? ты укуренный чтоль?
     
  17. General_App

    General_App Новичок

    С нами с:
    25 янв 2016
    Сообщения:
    51
    Симпатии:
    1
    Они потом будут участвовать, нет я выпевший
     
  18. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Протрезвеешь - пиши.
     
  19. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    filter_input в помощь :)
     
  20. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Зря начал с игры. Сначала нужно было изучить синтаксис и функционал языка, применяя на практике, тестируя программу, а потом уже писать игру, прежде проектируя задачу, а потом писать скрипт-код.
    Это плохо, логику работы нужно отделять.
    На самом деле подключения файлов include или reuqire работает быстрее, чем работа с базой, за исключением если там утечка памяти.
    Оба варианта будут работать.
    Только первый вариант - больше рассматривают, чтобы не делать конкатенацию строк и желательно обрамлять переменную с помощью фигурных скобок {}.
    Также нужно учитывать, что - это работает только при двойных кавычках " ", при одинарных кавычках ' ' работать не будет.
    PHP:
    1. echo"Улица {$street}, дом {$house} - кв. {$flat}";
    Этот вариант работает немного медленнее. (разница почти не заметна, но при больших данных есть).
    PHP:
    1. echo"Улица " . $street . ", дом " . $house . " - кв. " . $flat;
    Самый быстрый вариант с прототипом конструкции (передача аргументов через запятую):
    PHP:
    1. echo'Улица',
    2. $street,
    3. 'дом ',
    4. $house,
    5. '- кв. ',
    6. $flat;
    Про кавычки и в целом строки, все при дельно разжевано - обрати внимание на синтаксис двойных и одинарных и будь внимательнее.
    Ответ дан выше.
    Для ограничения строки можно воспользоваться функцией mb_substr - строка будет обрезана до нужной длины (которую укажем), если нужно, не обрезать, а чтобы уведомляло, можно воспользоваться mb_strlen и сверить с нужной длиной.
    Максимальное количество символов в типе varchar - 255
    Естественно быстрее сразу дернуть.
    settype не нужно здесь использовать.
    Гораздо быстрее и правильнее: привести к нужному типу данных.
    PHP:
    1. $bild_tip = (int)$_GET['bild_tip'];
    Используй filter_input - для работы с глобальными массивами $_GET, $_POST и т. д..
    Не используй устаревшие методы и расширения.
    Старайся всегда проектировать задачу прежде чем писать скрипт-код - это тебе поможет в будущем над большими и сложными проектами.
    Используй mysqli -или что тебя интересует, не совсем понятно, какие вопросы? И какие ответы ты не нашел? :)
    Опиши задачу более подробнее.
     
    #20 rodent90, 3 июл 2016
    Последнее редактирование: 3 июл 2016
  21. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @General_App по какой книге изучаешь PHP?
     
  22. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    мда, код еще тот ад..
     
  23. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Писал varchar (500) и прокатывало
    не стоит, достаточно экранировать значения, подставляемые в запросы. Это в одной очень глупой книжке было написано, "PHP глазами хакера", но сам посуди, вот нормальный текст:
    Код (Text):
    1.  
    2. How to select rows with column i < 25?
    Здесь нет и намёка на инъекции, а твоя функция будет затирать
     
  24. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
     
  25. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Ganzal,
    Последняя версия СУБД MySQL позволяет хранить в переменной типа VARCHAR данные длиной вплоть до 65,535 символов, это максимальная длинна этого типа данных.

    Понятно все.
    Теперь.
    Ранее не было такой возможности, давно помню хотел сделать больше 255, постоянно до 255 резало, прходилось mediumom решать проблему. char - так и остался 255, понятно :)

    Ну тогда нет проблем.