过去几天我在谷歌上搜索PHP中的“转义”。 我对此有了一些了解,为什么你必须逃避事情。
我学过PHP,但我们没有学到任何关于转义的知识。 几周前我第一次听到这个消息......
目前我用wordpress制作了一个项目。 (插件-dev的) 该插件的代码几乎准备就绪,但我没有逃脱任何事情! 我现在想做,但据我所知,这是不正确的。
php.net上记录了几个转义函数。 wordpress中包含一些转义函数。 (esc_html(),esc_url(),esc_attr(),...)
我创建了一个简短无意义的代码示例,它还包含Wordpress i18n函数。
如果有人能告诉我如何根据代码示例应用转义,那对我来说将是一个很大的帮助。
我会对它有所了解并在我的项目中采用它。
<h1><?php echo "This is my heading"; ?></h1>
<a href="<?php echo $url ?>"><?php _e( 'my link', 'TextDomain' ); ?></a>
<div class="panel panel-info<?php if ( $design_animation != " " ) { echo " animated " . $design_animation; } ?>">
<div class="panel-heading">
<h3 class="panel-title">
<i class="fa fa-info-circle"></i> <?php _e( 'This is the panel-title', 'TextDomain' ); ?>
</h3>
</div><!--/.panel-heading-->
<div class="panel-body">
<?php echo "<div class='alert " . $AlertClass . "'>" . $AlertText . "</div>"; ?>
<div class="form-group">
<label for="duration" class="col-sm-3 control-label"><?php _e( 'Duration', 'TextDomain' ); ?>:</label>
<div class="col-sm-9">
<div class="input-group">
<select class="form-control <?php echo $class ?>" name="duration" id="duration" required<?php echo $FormElementState; ?>>
<?php
$query_sql=$ wpdb->prepare( "SELECT blabla ..." ,$variable );
$query = $wpdb->get_results( $query_sql, ARRAY_A );
foreach($query as $row) { echo "<option value='" . $row["duration"] . "'>" . $row["duration"] . "" . __( 'Minuten', 'TextDomain' ) . "</option>";
?>
</select>
</div>
</div>
</div>
<textarea rows="4" cols="50">
<?php echo $MyTextFromDatabase ?>
</textarea>
编辑:
在上面的例子中:变量“$ design_animation”来自DB。该值不可由用户编辑。它被用作课程。我必须逃脱吗?
变量“$ row [”duration“]”来自DB。它是一个计算的整数。我必须逃脱吗?
在Wordpress中有逃避i18n翻译的功能。 i18n翻译始终在我的代码中,不会来自数据库或表单。它们为什么存在?
谢谢!!!
答案 0 :(得分:0)
如果数据来自用户输入并在php代码中处理,则可以使用addslashes将其转义。 (如果启用了magic_quotes_gpc,则没有必要)
如果它来自用户输入以便将其保存到数据库中,您可以考虑将预准备语句与PDO一起使用,或mysqli_real_escape_string使用较旧的API。