да, а что в этом случае тогда?а в этом случае во первых браузер вполне естественно будет класть болт на ваши заголовки, ибо контент уже загружен, а во вторых все это примет объект аякса, а не документ, и если вам так принципиально сделать это именно аяксом, то надо писать на жс обработчик принятого контента и из него лепить уже блоб, и потом файл сохранять только. Тупо, муторно, жрет процессор и память. Достаточно было бы сделать линк с нужными параметрами и отправлять на сервер запрос гет, точно так же как вы делаете это аяксом, только без аякса, и все будет работать.
$url = "info.php";почитайте во первых рфц про урл, во вторых ошибки смотрите, либо включите вывод ошибок и варнингов, либо смотрите логи.
Но вопрос в том, насколько это правильно, с точки зрения паттерна фабричного метода.Чет вы сильно путаете теплое с мягким... Внутренняя реализация классов созданных фабрикой НИКАК не влияет на "фабричность". Паттерн относится только к методу создания готовых объектов по определенным условиям. Какие это объекты вообще не суть важно. По сути они могут быть абсолютно разные, просто по логике чаще всего это однотипные объекты, отличающиеся в настройках или внутренней реализации (например все они реализуют один интерфейс, но внутри работают по разному).
//$role = $_SESSION['role'];
$role = 'moderator';
class Role{
public function checkPermission($action)
{
if(isset ($this->$action))
{
return $this->$action;
}
return false;
}
}
class admin extends Role{
protected $addItem = true;
protected $editItem = true;
protected $deleteItem = true;
}
class moderator extends Role{
protected $addItem = true;
protected $editItem = true;
protected $deleteItem = false;
}
class publicator extends Role{
protected $addItem = true;
protected $editItem = false;
protected $deleteItem = false;
}
class Factory{
public static function createUsers($role) : Role{
if(class_exists($role))
return new $role;
else
echo ("Роль".$role."отсутствует");
}
}
$login = Factory::createUsers($role);
var_dump($login);
// try to use in code:
if ($login->checkPermission('editItem')){
echo 'lets edit!';
};
<input type="file" name="avatar" accept="image/gif, image/jpeg">
облегчает человеку выбор верного форматаif(isset($file))
не гарантирует что файл загрузился, по этому нужно проверять еще и еррор, перед тем как передавать несуществующие свойства в функцию$permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
ваще жесть, про хэш не слышали? Тем более еще и в разных регистрах называть файлы... $arr = str_replace('/\s/','',str_split($pin));
будет работать весьма неоднозначно, хотя бы по тому что str_split() не поддерживает работу с мультибайтовыми кодировками. Во вторых она там конечно же нафиг не нужна, так как str_replace() работает со строками в третьем аргументе, но зато не работает с регулярными выражениями в первом, по этому эта строка у вас вообще никак не работает. В остальном все вполне в лучших традициях бредогенераторов.