shell bypass 403
<?php
/**
* @package RSForm! Pro
* @copyright (C) 2007-2019 www.rsjoomla.com
* @license GPL, http://www.gnu.org/copyleft/gpl.html
*/
defined('_JEXEC') or die;
use Joomla\CMS\Language\Text;
require_once JPATH_ADMINISTRATOR.'/components/com_rsform/helpers/field.php';
class RSFormProFieldTextbox extends RSFormProField
{
// backend preview
public function getPreviewInput()
{
$value = (string) $this->getProperty('DEFAULTVALUE', '');
$size = $this->getProperty('SIZE', 0);
$placeholder = $this->getProperty('PLACEHOLDER', '');
$codeIcon = '';
if ($this->hasCode($value)) {
$value = Text::_('RSFP_PHP_CODE_PLACEHOLDER');
$codeIcon = RSFormProHelper::getIcon('php');
}
return $codeIcon . '<input type="text" value="'.$this->escape($value).'" size="'.(int) $size.'" '.(!empty($placeholder) ? 'placeholder="'.$this->escape($placeholder).'"' : '').'/>';
}
// functions used for rendering in front view
public function getFormInput() {
$value = (string) $this->getValue();
$name = $this->getName();
$id = $this->getId();
$size = $this->getProperty('SIZE', 0);
$maxlength = $this->getProperty('MAXSIZE', 0);
$placeholder = $this->getProperty('PLACEHOLDER', '');
$type = $this->getProperty('INPUTTYPE', 'text');
$attr = $this->getAttributes();
$additional = '';
$html = '<input';
if ($attr) {
foreach ($attr as $key => $values) {
// @new feature - Some HTML attributes (type, size, maxlength) can be overwritten
// directly from the Additional Attributes area
if (($key == 'type' || $key == 'size' || $key == 'maxlength') && strlen($values)) {
${$key} = $values;
continue;
}
$additional .= $this->attributeToHtml($key, $values);
}
}
// Set the type & value
$html .= ' type="'.$this->escape($type).'"'.
' value="'.$this->escape($value).'"';
// Size
if ($size) {
$html .= ' size="'.(int) $size.'"';
}
// Maxlength
if ($maxlength && in_array($type, array('text', 'email', 'tel', 'url'))) {
$html .= ' maxlength="'.(int) $maxlength.'"';
}
// Placeholder
if (!empty($placeholder)) {
$html .= ' placeholder="'.$this->escape($placeholder).'"';
}
// Additional attributes for type="number" or type="range"
if (in_array($type, array('number', 'range'))) {
$min = $this->getProperty('ATTRMIN', '');
$max = $this->getProperty('ATTRMAX', '');
$step = $this->getProperty('ATTRSTEP', 1);
if (strlen($min) && is_float((float) $min)) {
$html .= ' min="'.$this->escape((float) $min).'"';
}
if (strlen($max) && is_float((float) $max)) {
$html .= ' max="'.$this->escape((float) $max).'"';
}
if (strlen($step) && is_float((float) $step)) {
$html .= ' step="'.$this->escape((float) $step).'"';
}
}
// Name & id
$html .= ' name="'.$this->escape($name).'"'.
' id="'.$this->escape($id).'"';
// Additional HTML
$html .= $additional;
// Close the tag
$html .= ' />';
return $html;
}
public function getValue() {
$rule = $this->getProperty('VALIDATIONRULE', 'none');
if ($rule == 'password') {
return '';
}
return parent::getValue();
}
public function getAttributes() {
$attr = parent::getAttributes();
if (strlen($attr['class'])) {
$attr['class'] .= ' ';
}
$attr['class'] .= 'rsform-input-box';
return $attr;
}
}