Autor Zpráva
Fisak
Profil
Dobrý den. Mám problém s tím, že pokud zaškrtnu checkbox tak je to v pohodě.. ale pokud nezaškrtnu checkbox tak už mi to píše hlášku "Notice: Undefined index: web_spacer in F:\localhost\insignia\admin\php_modules\general_settings\index.php on line 10"

checkbox:
 <?php 
$slozka_u_pl = OpenDir ("plugins/usefull_plugins/");
while  (false !== ($soubor_pl = ReadDir ($slozka_u_pl)))
{ 

    if($soubor_pl != "." and $soubor_pl != ".." and $soubor_pl != "") {
    
        $soubor_u_pl = str_replace("_", " ", $soubor_pl);
        if(options($soubor_pl) == "on") {
        
            echo "<label><input name=\"$soubor_pl\" type=\"checkbox\" class=\"form\" size=\"25\" checked=\"checked\"/><a href=\"".options("mod_rewrite", "admin", "plugins", "$soubor_pl")."\">".ucfirst("$soubor_u_pl")."</a></label> || ";
        
        } else { 
        
            echo "<label><input name=\"$soubor_pl\" type=\"checkbox\" class=\"form\" size=\"25\"/><a href=\"".options("mod_rewrite", "admin", "plugins", "$soubor_pl")."\">".ucfirst("$soubor_u_pl")."</a></label> || ";
        
        }
    }

}
?>

a php kod pro ukládání do db:
//nastavení pluginů
    $slozka_u_pld = OpenDir ("plugins/usefull_plugins/");
    while(false !== ($soubor_pld = ReadDir ($slozka_u_pld))) { 
    
        if($soubor_pld != "." and $soubor_pld != ".." and $soubor_pld != "") {
        
            $form_soubor_pld = preg_replace('#[^0-9\a-z\-\_\.]#ui', '', $_POST[$soubor_pld]); 
            
            $overeni = DB::query("SELECT * FROM [:pref:options] where [type] = %s", $soubor_pld);
    
            if(count($overeni)) {
                
                DB::query('UPDATE [:pref:options] SET [text] = %s', $form_soubor_pld, ' WHERE [type]=%s', $soubor_pld);
    
            } else {
                
                $arr = array(
                    'type' => $soubor_pld,
                    'text'  => $form_soubor_pld,
                );
                DB::query('INSERT INTO [:pref:options]', $arr);
    
            }
    
        }
    
    }



údajně je chyba v tomto řádku " $form_soubor_pld = preg_replace('#[^0-9\a-z\-\_\.]#ui', '', $_POST[$soubor_pld]); "
shaggy
Profil
Platí to, čo platilo v iných témach (stačilo pohľadať), napríklad: Notice: Undefined index: odeslano
Skúsim ťa naviesť, na tom riadku robíš s hodnotou $_POST['web_spacer'], ktorá sa však neodoslala.
Fisak
Profil
shaggy:
ok děkuji.. vyřešil sem to takto:
$post_soubor = isset ($_POST[$soubor_pld]) ? $_POST[$soubor_pld] : ('default');
$form_soubor_pld = preg_replace('#[^0-9\a-z\-\_\.]#ui', '', $post_soubor); 
Fisak
Profil
tak znova tu mám ten samý problém ale se sessionem:
<?php
if(isset($_POST['change'])) {
    
    if(!empty($_POST["old_pass"]) and !empty($_POST["new_pass_1"]) == !empty($_POST["new_pass_2"]) and  !empty($_POST["new_pass_1"]) and !empty($_POST["new_pass_2"])) { //podmínky pro přepsání starého hesla
    $admin_sql = DB::query("select * from [:pref:admins] where %and", array(
    'id = %i', mysql_real_escape_string($_SESSION["admin_id"]),
    'pass = %s', mysql_real_escape_string($_SESSION["old_pass"]),
    ));
    
    $pass1 = md5($_POST["new_pass_1"]);
    $pass2 = md5($_POST["new_pass_2"]);
    
        if(mysql_num_rows($admin_sql) and $pass1 == $pass2) {
        
            DB::query("UPDATE [:pref:admins] SET [pass] = '".$pass2."' where [id] = %i", mysql_real_escape_string($_SESSION["admin_id"])); //zapsání nového hesla
            
            redirect_page("admin", "option_admins", "1");
        
        } else redirect_page("admin", "option_admins", "2");
        
    } else redirect_page("admin", "option_admins", "2");

}
píše mi to undefined index v tomto řádku "'pass = %s', mysql_real_escape_string($_SESSION["old_pass"]),"
což by měla být nejspíš blbost ..vždyť old pass už je v sessionu tak proč by bylo undefined ?
Davex
Profil
Vypiš si var_dump($_SESSION). Pole by mělo být prázdné, protože chybí session_start().
Tori
Profil
Označená část na ř.4 je přebytečná, následující dvě podmínky jsou více restriktivní: if(!empty($_POST["old_pass"]) and !empty($_POST["new_pass_1"]) == !empty($_POST["new_pass_2"]) and !empty($_POST["new_pass_1"]) and !empty($_POST["new_pass_2"])) {

Btw proč ukládáte do session i otisk hesla přihlášeného uživatele a zcela ignorujete, co vlastně zadal do formuláře jako současné heslo? Co když se někdo přihlásí ze společného počítače, pak odejde, a někdo jiný mu zkusí změnit heslo, přičemž jako staré heslo zadá nějakou blbost. Změna hesla projde, ne?
Fisak
Profil
Tori:
Ona to totiž byla ta chyba.. tam nemělo být $_SESSION["old_pass"]; ale => $_POST["old_pass"]; a pak už to funguje normálně v pohodě :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: