Jump to content
  • 0

Вопросы по PHP.


Kompilator
 Share

Question

Здравствуйте.

Для создания сайта потребовался PHP, в этой теме буду задавать вопросы знатокам.

Пока справляюсь сам, но вот возник вопрос - при формировании таблицы для отображения данных из БД как лучше выводить HTML ? Т.е. каждый шаг цикла (строка БД) выводить посредством "echo" или накапливать всю таблицу в переменной, а потом сразу-  "echo $text;" ?

Как правильнее, или быстрее исполняется или еще что нибудь ?

Link to comment
Share on other sites

Recommended Posts

  • 0

Моё почтение в очередной, далеко, очень далеко не в последний раз.

Начинаю делать комменты в сервисе сравнения фар.

Как эффективнее всего бороться с длинной, неразрывной (безпробельной) строкой ?

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

Link to comment
Share on other sites

  • 0
Как эффективнее всего бороться с длинной, неразрывной (безпробельной) строкой ? Кто нибудь обязательно такую напишет и будет она у меня торчать за пределы всех дивов, и даже, не побоюсь этого слова - самой границы экрана.
 

overflow: hidden;

  • Like 1
Link to comment
Share on other sites

  • 0

Cпасибо.

Посоветуйте, нужен ли какой нибудь фильтр символов вводимых пользователем при регистрации ?

На многих сайтах говорится о допустимых символах, почему ?

Я пытался вводить в свою форму типа - "№;%::??*((?&^%$#@", всё проходит, ПХП ошибок не даёт.

Зачем спрашивается требуют такое ?

Link to comment
Share on other sites

  • 0

 

Спасибо.

Верно ли я понял, что функции - mysql_real_escape_string, мне будет достаточно ?

 

Не силён в безопасности на php. Пусть знающие ответят.

Но я всегда стараюсь использовать подготовленные запросы.

http://php.net/manual/ru/pdo.prepared-statements.php

 

А для чего то простого всегда использую

http://phpfaq.ru/safemysql

Edited by li4e
Link to comment
Share on other sites

  • 0

Решил сделать регулярными выражениями.
Начал играться разными символами и обнаружил, что - # вообще не передаётся методом GET, и всё что после него было в переменной, пропадает.
Как же тогда быть, если для проверки в PHP строку даже нельзя полностью передать в случае присутствия там - # ?

Обнаружилось что и - &, + тоже не передаются.
Как же быть ? Отказываться от создания комментариев значит придётся ((((( а уже столько написано для них, очень жаль.

Edited by Kompilator
Link to comment
Share on other sites

  • 0

Решил сделать регулярными выражениями.

Начал играться разными символами и обнаружил, что - # вообще не передаётся методом GET, и всё что после него было в переменной, пропадает.

Как же тогда быть, если для проверки в PHP строку даже нельзя полностью передать в случае присутствия там - # ?

Обнаружилось что и - &, + тоже не передаются.

Как же быть ? Отказываться от создания комментариев значит придётся ((((( а уже столько написано для них, очень жаль.

 

А какая задача стоит, может можно через POST передать?

Link to comment
Share on other sites

  • 0

Задача создать учетную запись в базе, логин и пароль.

В адресной строке GET передаёт свою инфу, т.е. "login=test#test", знак # там есть, но уже в ПХП, всё что после него, не работает.

Код:

echo $_GET['loginreg'];

выведет только - test, всё что после # теряется.

Link to comment
Share on other sites

  • 0
выведет только - test, всё что после # теряется.

:facepalmxd:

 

<схема>://<логин>:<пароль>@<хост>:<порт>/<URL‐путь>?<параметры>#<якорь>

 

 

читайте https://ru.wikipedia.org/wiki/URL

 

 

Решается это с помощью javascript к примеру:

 

http://javascript.ru/encodeURIComponent

  • Like 1
Link to comment
Share on other sites

  • 0
/^[а-яА-ЯёЁ0-9_-]{3,16}$/

Не работают русские буквы в регулярном выражении.

если заменить а-яА-Я (пробовал а-яА-ЯёЁ) на a-zA-Z, то латиница работает.

Достиг - /[a-zA-Zа-яА-ЯёЁ0-9_-]{3,16}/ , так работоспособность настала.

Прямо ужас какойто, не могли этот ПХП попроще написать, например пишешь строку - проверка корректности логина как и у всех, ан раз и готово.

:devil:

Edited by Kompilator
Link to comment
Share on other sites

  • 0

Попробуйте кто нибудь пожалуйста зарегистрироваться, потом войти в учетку и выйти из неё, если не трудно.

http://велосвет.рф/compare.html?idright=32&idleft=32&navmenur=Kompilatorright&navmenul=Kompilatorleft&resimg=3&stat=&scrtop=450

Как оно, работает на ваш взгляд нормально ?

Спасибо.

Link to comment
Share on other sites

  • 0

Вижу, кто-то создал логин - "-- DROP database".

В регулярном выражении пробелы же не разрешены - /[a-zA-Zа-яА-ЯёЁ0-9_-]{3,16}/

Одна головная боль с ними ((((((((((((((((

Edited by Kompilator
Link to comment
Share on other sites

  • 0
Это я, но я не правильно сделал

А что, можно вот таким образом удалить у меня базу данных ?

Надо так:

В самом начале пробовал, что-то не сросталось, попробую ещё раз.

Link to comment
Share on other sites

  • 0

Значит может другой навредить.

Как избежать такого вреда ?

Попробовал - /^[a-zA-Zа-яА-ЯёЁ0-9_-]{3,16}$/

, с исправлением вообще не проходят русские буквы.

Edited by Kompilator
Link to comment
Share on other sites

  • 0

Экранировать символы, вам же писали.

 

Что-то после 15 часов писания уже туплю.

Мне надо сделать как в коде ниже, при помощи подготовленных запросов и проблем не будет ?

<?php$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");$stmt->bindParam(':name', $name);$stmt->bindParam(':value', $value);// вставим одну строку$name = 'one';$value = 1;$stmt->execute();// теперь другую строку с другими значениями$name = 'two';$value = 2;$stmt->execute();?>
Link to comment
Share on other sites

  • 0

 

Мне надо сделать как в коде ниже, при помощи подготовленных запросов и проблем не будет ?

<?php$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");$stmt->bindParam(':name', $name);$stmt->bindParam(':value', $value);// вставим одну строку$name = 'one';$value = 1;$stmt->execute();// теперь другую строку с другими значениями$name = 'two';$value = 2;$stmt->execute();?>

 

Да, если делать через PDO и подготовленные параметры, то проблем быть не должно. В таком случае выражение компилируется до того как туда попадут какие-либо параметры. Как по мне, только так и надо делать :)

Edited by Web Creation
  • Like 1
Link to comment
Share on other sites

  • 0

 

Экранировать символы, вам же писали.

 

Что-то после 15 часов писания уже туплю.

Мне надо сделать как в коде ниже, при помощи подготовленных запросов и проблем не будет ?

<?php$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");$stmt->bindParam(':name', $name);$stmt->bindParam(':value', $value);// вставим одну строку$name = 'one';$value = 1;$stmt->execute();// теперь другую строку с другими значениями$name = 'two';$value = 2;$stmt->execute();?>

Попробуйте SafeMySQL.

  • Like 1
Link to comment
Share on other sites

  • 0

 

SafeMySQL

Спасибо.

Скажите, почему советуете именно SafeMySQL, а не подготовленные запросы ?

 

Ну, удобный синтаксис. Да и какой смысл в подготовленный запросах, если всё равно он выполняется 1 раз?

Link to comment
Share on other sites

  • 0
Ну, удобный синтаксис. Да и какой смысл в подготовленный запросах, если всё равно он выполняется 1 раз?

Воспользовавшись SafeMySQL можно будет убрать проверку на допустимость вводимых символов ? например в связке 'логин - пароль', а то регулярное выражение /^[a-zA-Zа-яА-ЯёЁ0-9_-]{3,16}$/ толком не работает.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy