- 1
echo "Для разлагинивания почистите куки браузером.<br>";
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+232
echo "Для разлагинивания почистите куки браузером.<br>";
Взяли новичка на испытательный срок. При нажатии на кнопку "Выход" наблюдаю данную надпись.
+164
$update = !empty($id) and $id > 0;
Вопреки ожиданиям автора, выражение $id > 0 вообще никогда не принимается во внимание.
/* Ознакомьтесь с приоритетом операций */
Сначала отработает $update = !empty($id)
потом значение из $update будет сравниваться с $id > 0 и результат сравнения никуда не попадёт.
Рекомендация: используйте && вместо оператора "and".
+162
<?php
function is_get($id) {
return (count(array_unique(str_split($id))) == 1);
}
?>
Гет или не гет?)
+159
<?php
//////////
static function AddKeyDis($meta_key,$meta_dis=null){
if(is_array($meta_key)){
return self::$result=array("meta_key"=>$meta_key['meta_key'],"meta_dis"=>$meta_key['meta_dis']);
}elseif($meta_dis!==null){
return self::$result=array("meta_key"=>$meta_key,"meta_dis"=>$meta_dis);
}
return null;
}
//////////
?>
эх =)
+160
<?php
class UserSessionComponent extends Component {
//...
protected function loginByUserId($user_id, $is_autologin = false) {
$list = $this->_loadComponents($this->components, array('UserAuth'));
$userAuth = $list['UserAuth'];
$userAuth->startup($this->controller); # !!! WORKFLOW VIOLATION !!!
$method = $is_autologin ? 'autologin' : 'login';
if ($userAuth->$method($user_id)) {
return $this->controller->Session->read('User.data');
}
}
//...
}
class UserAuthComponent extends BaseMagicComponent {
protected $loginType = 'explicit';
//...
public function autologin($params = array()) {
$this->loginType = 'implicit';
return $this->_login($params);
}
public function login($params = array()) {
$this->loginType = 'explicit';
return $this->_login($params);
}
//...
protected function _login($params = array()) {
switch (true) {
case (is_array($params) && isset($params['user']) && isset($params['password'])):
$result = $this->loginByUserAndPassword($params['user'], $params['password']);
break;
case (is_numeric($params) && $params > 0):
$result = $this->loginUser($params);
break;
default:
if (empty($params)) {
$result = false;
} else {
$result = $this->loginUser($params);
}
}
// ...
}
// ...
public function loginUser($user) {
switch (true) {
case is_object($user):
if (isset($user->data)) {
$a_user = $user->data;
} else {
return false;
}
break;
case (is_numeric($user) && ($user > 0)):
if (!($a_user = $this->User->findById($user))) {
return false;
}
break;
case (is_array($user) && (isset($user['User']['id']))):
$a_user = $user;
break;
default:
return false;
}
// ...
CFL::using('log');
if (empty($GLOBALS['loginIsLogged'])) {
$loginLog = new cflLoginTrackingLogger();
if ($this->loginType == 'implicit') {
$loginLog->implicit_login(array('user_id' => $a_user['User']['id']));
} else {
$loginLog->explicit_login(array('user_id' => $a_user['User']['id']));
}
$GLOBALS['loginIsLogged'] = true;
}
// ...
}
}
Сорри за много-много кода, еле-еле вписался в лимит. Но пришлось запостить все. Логическая цепочка совершенно потрясающая (смотрим с самого верхнего метода и идем дальше к самому нижнему методу). Тут у нас кода просто по колено: сумасшедший пахлава-код, использование глобальной переменной флага, особое извращенное использование конструкции switch, фактическое дублирование этого самого switch в двух последних методах, нейминг переменных и методов...
Казалось бы, как все это вообще могло быть написано? Но использование компонента с говорящим именем BaseMagic все ставит на свои места.
+161
// функция с именем is_url, передаваемые ей перем.: $url.
function is_url($url)
{
// если ничего не ввели, иначе:
if($url == "") return 0;
// если не соответствует стандарту, возвращаем ошибку.
if(!(ereg("\.", $url) && ereg("http://", $url) && ereg("/", str_replace("http://" , "", $url)))) return 0;
else return 1;
}
Проверка URL на валидность (http://www.snippy.ru/snippet/213/)
+158
function changeType(what) {
if (what == "forward") {
if (document.forms[0].elements['forward_list'].disabled == true) {
document.forms[0].elements['forward_list'].disabled = false;
} else {
document.forms[0].elements['forward_list'].disabled = true;
}
}
}
Есть замечательная ispCP и форма для настройки форвардинга е-мэйлов. Тут описывается поведение чек-бокса для включения формы.
+158
do
{
do
{
if ($myrow_cats["category_id"] == $myrow_oldtovar_1["id"])
{
printf("<tr><td class='newcat_author'><input name='old_id_cat[]' type='checkbox' value='%s' checked >
%s</td></tr>",
$myrow_oldtovar_1["id"],$myrow_oldtovar_1["rubrikatitle"]);
}
else
{
printf("<tr><td class='newcat_author'><input name='old_id_cat[]' type='checkbox' value='%s' >%s</td></tr>",
$myrow_oldtovar_1["id"],$myrow_oldtovar_1["rubrikatitle"]);
}
}
while($myrow_oldtovar_1 = mysql_fetch_array($result_oldtovar_1));
}
while ( $myrow_cats = mysql_fetch_array($result_cats) );
+161
# Добавление пользователя
if ($_GET['action'] == "add_user" OR $_POST['action'] == "add_user"){
#Проверяем достаточно ли прав на добавление пользователя
$pal = 15;
if (access_level() < $pal) {
echo "Извените, у вас недостаточно прав для данной операции<br>";
echo "Ваш уровень ".access_level()." а доступ возможен только с ".$pal."<br>";
}
else{
echo "Уровень доступа - $pal<br>";
echo "<form action=\"index.php\" method=\"post\">\n";
echo "<select name=type><option value=1>support<option value=2>installer</select><br>";
echo "Логин ( первая буква имени + фамилия (en)) <input type=\"text\" name=\"add_username\"><Br> passwd <input type=\"password\" name=\"add_passwd\"><Br>\n access_level <input type=text name=access_level><br>\n";
echo "Полное имя (Фамилия, Имя, [Отчество]) <input type=\"text\" name=\"add_full_name\"><br>";
echo "Телефон (только 10 цифр, без +7, 8 и т.п.) <input type=\"text\" name=\"add_phone\"><Br>";
echo "<input type=\"hidden\" name=\"action\" value=\"add_user\">\n";
echo "<input type=\"submit\" name=\"submit\" value=\"add\"><br>\n</form>";
$add_name=mysql_real_escape_string($_POST['add_username']);
$add_pass=mysql_real_escape_string($_POST['add_passwd']);
$add_full_name=mysql_real_escape_string($_POST['add_full_name']);
$add_phone=mysql_real_escape_string($_POST['add_phone']);
$add_access_level=mysql_real_escape_string($_POST['access_level']);
$add_pass = md5($add_pass);
if($_POST['type'] == "1"){
echo $add_name."-".$add_pass."-".$add_access_level."<br>";
$sql = 'INSERT INTO `switches`.`creators` (`id`, `name`, `passwd`, `access_level`, `descr`, `creator`, `create_date`) VALUES (\'\', \''.$add_name.'\', \''.$add_pass.'\', \''.$add_access_level.'\', \'\', \''.$_SESSION['user_id'].'\', NOW());';
mysql_query($sql,$dbutm);
echo "<br>Пользователь добавлен.<Br>";
}
elseif($_POST['type'] == "2"){
$sql = 'INSERT INTO `switches`.`installers` (`id`, `name`, `full_name`, `passwd`, `access_level`, `descr`, `creator`, `create_date`, `phone`) VALUES (\'\', \''.$add_name.'\', \''.$add_full_name.'\', \''.$add_pass.'\', \''.$add_access_level.'\', \'\', \''.$_SESSION['user_id'].'\', NOW(), \''.$add_phone.'\');';
mysql_query($sql,$dbutm);
echo "<br>Монтажник добавлен.<Br>";
}
}
}
Система биллинга. Начинаю нервничать...
+160
if ($this->Session->check('_userJustRegistered')) {
switch (($tmpJR = $this->Session->read('_userJustRegistered'))) {
case 'confirmed':
$this->Session->delete('_userJustRegistered');
break;
case 'not_confirmed_first':
$this->Session->write('_userJustRegistered', 'not_confirmed');
break;
}
}
Кусочек многоступенчатой системы по определению статуса юзера.