Как отключить часть кода в php
Перейти к содержимому

Как отключить часть кода в php

  • автор:

Как отключить часть кода в php

Argument ‘Topic id’ is null or empty

Сейчас на форуме

© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru

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

ООО «Планета Эксел»
ИНН 7735603520
ОГРН 1147746834949
ИП Павлов Николай Владимирович
ИНН 633015842586
ОГРНИП 310633031600071

trim

Можно также задать список символов для удаления с помощью необязательного аргумента characters . Просто перечислите все символы, которые вы хотите удалить. Можно указать конструкцию .. для обозначения диапазона символов.

Возвращаемые значения

Примеры

Пример #1 Пример использования trim()

$text = «\t\tThese are a few words 🙂 . » ;
$binary = «\x09Example string\x0A» ;
$hello = «Hello World» ;
var_dump ( $text , $binary , $hello );

$trimmed = trim ( $text );
var_dump ( $trimmed );

$trimmed = trim ( $text , » \t.» );
var_dump ( $trimmed );

$trimmed = trim ( $hello , «Hdle» );
var_dump ( $trimmed );

$trimmed = trim ( $hello , ‘HdWr’ );
var_dump ( $trimmed );

// удаляем управляющие ASCII-символы с начала и конца $binary
// (от 0 до 31 включительно)
$clean = trim ( $binary , «\x00..\x1F» );
var_dump ( $clean );

Результат выполнения приведённого примера:

string(32) " These are a few words :) . " string(16) " Example string " string(11) "Hello World" string(28) "These are a few words :) . " string(24) "These are a few words :)" string(5) "o Wor" string(9) "ello Worl" string(14) "Example string"

Пример #2 Обрезание значений массива с помощью trim()

$fruit = array( ‘apple’ , ‘banana ‘ , ‘ cranberry ‘ );
var_dump ( $fruit );

array_walk ( $fruit , ‘trim_value’ );
var_dump ( $fruit );

Результат выполнения приведённого примера:

array(3) < [0]=>string(5) "apple" [1]=> string(7) "banana " [2]=> string(11) " cranberry " > array(3) < [0]=>string(5) "apple" [1]=> string(6) "banana" [2]=> string(9) "cranberry" >

Примечания

Замечание: Возможные трюки: удаление символов из середины строки

Так как trim() удаляет символы с начала и конца строки string , то удаление (или не удаление) символов из середины строки может ввести в недоумение. trim(‘abc’, ‘bad’) удалит как ‘a’, так и ‘b’, потому что удаление ‘a’ сдвинет ‘b’ к началу строки, что также позволит её удалить. Вот почему это «работает», тогда как trim(‘abc’, ‘b’) очевидно нет.

Смотрите также

  • ltrim() — Удаляет пробелы (или другие символы) из начала строки
  • rtrim() — Удаляет пробелы (или другие символы) из конца строки
  • str_replace() — Заменяет все вхождения строки поиска на строку замены

User Contributed Notes 2 notes

9 months ago

note there is a behaviour change in php 8

You used to be able to say:
$p1 = trim($_POST[‘p1’]);
This will now throw deprecated warnings if parameter p1 is not set. It is better to say:
$p1 = trim($_POST[‘p1’]??»);
or
$p1 = isset($_POST[‘p1’]) ? trim($_POST[‘p1’]) : null;
or
$p1 = isset($_POST[‘p1’]) ? trim($_POST[‘p1’]) : »;

7 months ago

Note that trim() is not aware of Unicode points that represent whitespace (e.g., in the General Punctuation block), except, of course, for the ones mentioned in this page.

There is no Unicode-specific trim function in PHP at the time of writing (July 2023), but you can try some examples of trims using multibyte strings posted on the comments for the mbstring extension: https://www.php.net/manual/en/ref.mbstring.php

  • Copyright © 2001-2024 The PHP Group
  • My PHP.net
  • Contact
  • Other PHP.net sites
  • Privacy policy

Сокрытие PHP

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

Несколько несложных методик могут помочь вам скрыть PHP , что усложняет работу потенциального взломщика, который пытается найти брешь в вашей системе. Установив опцию expose_php в off в конфигурационном файле php.ini , вы уменьшите количество доступной хакеру информации.

Ещё одна методика заключается в настройке веб-сервера таким образом, чтобы он обрабатывал файлы с различными расширениями как PHP -скрипты. Это можно указать как в .htaccess файлах, так и конфигурационном файле Apache. В таком случае вы сможете использовать при написании кода нестандартные расширения:

Пример #1 Маскировка PHP под другие языки программирования

# Теперь PHP-скрипты могут иметь те же расширения, что и другие языки программирования AddType application/x-httpd-php .asp .py .pl

Или скрыть его совсем:

Пример #2 Использование неизвестных расширений для PHP-скриптов

# Теперь PHP-скрипты могут иметь неизвестные типы файлов AddType application/x-httpd-php .bop .foo .133t

Также можно спрятать его под видом HTML -кода, что приведёт к потере производительности, так как все HTML -файлы будут обрабатываться PHP :

Пример #3 Маскировка PHP-файлов под HTML

# Теперь PHP-скрипты выглядят как обыкновенный HTML AddType application/x-httpd-php .htm .html

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

User Contributed Notes 26 notes

1 year ago

Just hiding it doesn’t look like good «security» if the code itself is flawed. At the end of the day the code has to run regardless of its file extension. There could be some advantages to this. But it does not prevent someone (who is not a script-kiddie or some kind of automated bot) from exploiting the flaws in the code.

Just leaving this comment to prevent a beginner from using this as a legitimate security measure (assuming they read documentation). Cool feature though.

17 years ago

So far I haven’t seen a working rewriter of /foo/bar into /foo/bar.php, so I created my own. It does work in top-level directory AND subdirectories and it doesn’t need hardcoding the RewriteBase.

# Rewrite /foo/bar to /foo/bar.php
RewriteRule ^([^.?]+)$ %.php [L]

# Return 404 if original request is /foo/bar.php
RewriteCond % «^[^ ]* .*?\.php[? ].*$»
RewriteRule .* — [L,R=404]

# NOTE! FOR APACHE ON WINDOWS: Add [NC] to RewriteCond like this:
# RewriteCond % «^[^ ]* .*?\.php[? ].*$» [NC]

10 years ago

The session name defaults to PHPSESSID. This is used as the name of the session cookie that is sent to the user’s web browser / client. (Example: PHPSESSID=kqjqper294faui343o98ts8k77).

To hide this, call session_name() with the $name parameter set to a generic name, before calling session_start(). Example:

15 years ago

Set INI directive «expose_php» to «off» will also help.
You can spoof your PHP to ASP.NET by using:
error_reporting ( 0 );
header ( «X-Powered-By: ASP.NET» );
?>

17 years ago

I think the best way to hide PHP on Apache and Apache itself is this:

httpd.conf
————-
# .
# Minimize ‘Server’ header information
ServerTokens Prod
# Disable server signature on server generated pages
ServerSignature Off
# .
# Set default file type to PHP
DefaultType application/x-httpd-php
# .

Now hacker knows only that you are using Apache.

19 years ago

You can see if somebody’s using PHP just by adding the following to the end of the URL:
?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
If the page is using PHP, this will show the PHP credits.

Setting expose_php to Off in php.ini prevents this.

21 years ago

PS. If you want to use pretty URLs (i.e. hide your .php extensions) AND you have safe-mode=on, the previous example (ForceType) won’t work for you. The problem is that safe-mode forces Apache to honor trailing characters in a requested URL. This means that:

would still be processed by the home script in our doc root, but for:

apache would actually look for the /home/contact_us.html file in our doc root.

The best solution I’ve found is to set up a virtual host (which I do for everything, even the default doc root) and override the trailing characters handling within the virtual host. So, for a virtual host listening on port 8080, the apache directives would look like this:


DocumentRoot /web/doc_root
Alias /home «/web/doc_root/home.php»
AcceptPathInfo On

Some people might question why we are overriding the trailing characters handling (with the AcceptPathInfo directive) instead of just turning safe-mode=off. The reason is that safe mode sets global limitations on the entire server, which can then be turned on or left off for each specific virtual host. This is the equivilent of blocking all connections on a firewall, and then opening up only the ones you want, which is a lot safer than leaving everything open globally, and assuming your programmers will never overlook a possible security hole.

15 years ago

The idea of hiding the X-Powered-By in PHP is a flawed attempt at establishing security. As the manual indicates, obscurity is not security. If I were exploiting a site, I wouldn’t check what scripting language the site runs on, because all that would matter to me is exploiting it. Hiding the fact that you use [x] language isn’t going to prevent me from bypassing poor security.

18 years ago

In response to the previous messages, for apache, there is a easier way to set files without «.» to be executed by PHP, just put this in a «.htaccess» file :

13 years ago

It’s a good idea to «hide» PHP anyway so you can write a RESTful web application.

Using Apache Mod Rewrite:

RewriteEngine On
RewriteRule ^control/([^/]+)/(.*)$ sitecontroller.php?control=$1&query=$2

You then use a function like the following as a way to retrieve data (in a zero indexed fashion) from the $_GET superglobal.

function myGET () $aGet = array();

if(isset( $_GET [ ‘query’ ])) $aGet = explode ( ‘/’ , $_GET [ ‘query’ ]);
>

return $aGet ;
>
?>

This is only a really basic example of course — you can do a lot with Mod Rewrite and a custom ‘GET’ function.

8 years ago

try this
RewriteEngine On

# Redirect external .php requests to extensionless url
RewriteCond % ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]

# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]

22 years ago

To hide PHP, you need following php.ini settings

and in httpd.conf

ServerSignature Off
(min works, but I prefer off)

20 years ago

adding MultiViews to your apache Options config
lets you hide/omit .php in the url without any rewriting, etc.

18 years ago

In order to get the PATH_INFO to work in order to pass parameters using a hidden program/trailing slash/»pretty url» in more recent versions of PHP you MUST add «AcceptPathInfo On» to your httpd.conf.

AddType application/x-httpd-php .php .html
AcceptPathInfo On

Try it out with your phpinfo page and you’ll be able to search for PATH_INFO.

If you want to drop the .php use one or both of these:
DefaultType application/x-httpd-php
ForceType application/x-httpd-php

19 years ago

Keep in mind, if your really freaked out over hiding PHP, GD will expose you.

Go ahead — make an image with GD and open with a text editor.. Somewhere in there you’ll see a comment with gd & php all over it.

21 years ago


RewriteEngine on

RewriteOptions inherit

RewriteRule (.*)\.htm[l]?(.*) $1.php$2 [nocase]

in .htaccess. You’ll need mod_rewrite installed for this .

Как пропустить часть кода

Есть ли способ «перепрыгнуть» часть php кода? Например: PHP сервер проверяет, передал ли js ему значение ulog , если да — выполняет код дальше, если нет — пропускает часть кода и продолжает выполнять его. Подробнее:

$db = mysqli_connect("localhost", "testsite", "testsite", "LHVideo"); $login = $_POST['ulog']; //эту часть он пропускает, если ulog не передано $result = mysqli_query($db, "SELECT password FROM accounts WHERE login='$login'"); $array = mysqli_fetch_array($result); if(empty($array['password']))< echo("true"); >else < echo("false"); >//с этого места продолжает выполнять код 

Отслеживать

задан 27 мар 2018 в 15:34

Иван Репин Иван Репин

341 1 1 золотой знак 9 9 серебряных знаков 21 21 бронзовый знак

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *