Autor Zpráva
Venushja
Profil
Zdravim mam takovou otazku nevim jak by to melo fungovat teda nakou predstavu mam ale nevim jak to udelat chci aby jsem pres formular v adminsitraci napsal heslo do formulare a ten by se poslal do databaze do tabulky heslo napr.. A pak by jsem chtel udelat aby se to heslo v administraci vypsalo za odkaz napr administrace.php?id=upravit&pass=$db[heslo] ale nevim jak to udelat neslo by to nako udelat lehcejc nebo trochu lip
Pokud by to nak slo mohl by jsem pls napsat nekdo nakej kratickej priklad?
Dekuji
Nox
Profil
Nedělej to před odkaz (get), ale pošli to přes post...asi i s nějakým tokenem aby bylo jisté, že to posílal opravdu admin (viz php.vrana.cz)

<form ... method="post">

a v cílovém souboru bude k dispozici pole $_POST s indexy podle atributu name u inputů a textareí
Venushja
Profil
Nox
Zas tak neskusenej nejsem ja posilam vsechno pres post ale kdyz chci udelat case a v default mam tydle odkazy tak to nijak pres method=post nejde odeslat (teda nevim o zadnym zpusobu)
Nox
Profil
Asi tedy nechápu o čem je řeč, mohl by si to nějak přeformulovat (nejlíp včetně čárek a vůbec nějak česky)?
Venushja
Profil
No mam v php CASE a v tom case mam default a v tom default mam odkazy na ruzny jiny case jako treba mazani uzivatelu pridani uzivatelu atd a ty odkazy nejdou poslat Metodou POST aby v adrese nebylo videt heslo (u administrace.php to samozdrejmne jde ale v default NEJDE)
Nox
Profil
Asi bude lepší, když sem hodíš ten kód...
Venushja
Profil
Nox
Ty me asi nechapes ja v prvnim prispevku jsem psal
ale nevim jak to udelat neslo by to nako udelat lehcejc nebo trochu lip
Pokud by to nak slo mohl by jsem pls napsat nekdo nakej kratickej priklad?

A ptal jsem se na to jak to udelat a ne ze s tim mam problem :-)
Nox
Profil
Pořád ale nechápu (a nikdo jiný se zde tedy nevyjadřuje) co potřebuješ, i přes to co si napsal...
nechápu proč potřebuješ někde zpracovávat údaje z url...mělo by to podle mě jít i bez toho,
ale bohužel viz předchozí věty
Venushja
Profil
Nox
Jezis :-)
Jsem tam napsal ze chci z administrace menit heslo do administrace a tim padem by se muselo zmenit i samo URL a neprepisovat v kodu
dam priklad administrace.php?id=vymaz&pass=heslo tady to heslo by se muselo zmenit s tim jak by v adminsitraci zmenil na svoje heslo takze treba do formulare napise kkt a najednou by se v tech URL a tim padem i heslo do administrace muselo zmenit takze by se najednou ukazalo url adminsitrace.php?id=vymaz&pass=kkt .....Ja jen ze by jsem to skusil udelat pres databazi a rpoto jsem se ptal jestli to nejde i jinak udelat..
Nox
Profil
Třeba je možný že nejsem nechápavý, ale jdeš na to nějak iracionálně ;)

Proč to heslo v url vůbec máš? Zadáváš heslo při logování a tam je to jasný post...a když už seš v administraci, tak heslo nikde nepíšeš...? Leda při změně hesla...a to je zase post
To je vůbec blbý nápad dávat heslo do url...
A to jestli si přihlášený kontroluješ třeba přes session a databázi, ne?
imploder
Profil
Venushja
V URL se nic takového neobjeví, pokud použiješ POST. Formulář na vymazání může vypadat nějak takto:
<form action="administrace.php">
<input type="text" name="pass" value="nové heslo" />
<input type="hidden" name="id" value="vymaz" />
<input type="submit" value="Nastavit heslo" />
</form>

Pochopitelně se taky musí odeslat klíč opravňující uživatele provést tu akci - přenastavení hesla. Nevím, jak to máš řešené - asi přes sessions - jinak se musí klíč taky dát jako hidden políčko do formuláře.
Venushja
Profil
Nox
No prave ja to musim mit v URL jinak se mi neukaze obsah co tam ma byt kdyz v tom url nedam toto &pass=heslo tak se mi neukaze obsah toho case nevim jak je to mozny
imploder
Profil
Venushja
No prave ja to musim mit v URL jinak se mi neukaze obsah co tam ma byt kdyz v tom url nedam toto &pass=heslo tak se mi neukaze obsah toho case nevim jak je to mozny
Tak to asi pro zobrazení obsahu používáš hodnoty proměnných uložené v poli _GET[]. Když budeš brát všechno z _POST[], tak v URL nebude vidět nic a taky to tak může fungovat.

Na jedné stránce jsem kdysi udělal změnu hesla kombinovaně, tj. formulář se pošle jako POST, ale protože klíč a hlášení se všude předávají jako GET (tj. v URL), tak se z pomocí funkce gpp() převedou na tvar v url a po provedení operace skript přesměruje už na výslednou stránku jenom s klíčem a hláškou o úspěchu/neúspěchu. Heslo už tam pak nikde vidět není.
Skript zmen_heslo.php:
<?
include "./pripoj.php";
include "./bprlib.php";
test_klice($_POST['klic']);
$uzivatel = u_info(ziskej_id_uzivatele($_POST['klic']));
if(IsSet($_POST['klic'])) $param_klic = gpp("", "klic", $_POST['klic']);
else $param_klic = "";
$cesta = SubStr($_SERVER['SCRIPT_NAME'], 0, StrRPos($_SERVER['SCRIPT_NAME'], "/"))."/nastaveni.php";
$zaznam = mysql_fetch_array(mysql_query("select * from hesla where id_uzivatele='".$uzivatel['id']."'"));
if($_POST['stare_heslo']!=$zaznam['heslo']) {
$parametry = gpp($param_klic, "chyba3", URLEncode("Staré heslo je chybné."));
Header("Location: http://".$_SERVER['SERVER_NAME']."$cesta$parametry");
exit;
}
if($_POST['heslo']=="") {
$parametry = gpp($param_klic, "chyba3", URLEncode("Zadejte nové heslo."));
Header("Location: http://".$_SERVER['SERVER_NAME']."$cesta$parametry");
exit;
}
if($_POST['heslo']!=$_POST['heslo2']) {
$parametry = gpp($param_klic, "chyba3", URLEncode("Nové heslo není stejné jako nové heslo zadané znovu pro kontrolu. "
."Asi jste při psaní nového hesla udělali chybu."));
Header("Location: http://".$_SERVER['SERVER_NAME']."$cesta$parametry");
exit;
}
$heslo = addslashes($_POST['heslo']);
mysql_query("update hesla set heslo='".$_POST['heslo']."' where id_uzivatele='".$uzivatel['id']."'");
$cesta = SubStr($_SERVER['SCRIPT_NAME'], 0, StrRPos($_SERVER['SCRIPT_NAME'], "/"))."/nastaveni.php";
$zprava = URLEncode("Heslo bylo změněno.");
Header("Location: http://".$_SERVER['SERVER_NAME']."$cesta?klic=".$_POST['klic']."&zprava3=$zprava");
include "./odpoj.php";
?>
Venushja
Profil
imploder
No to je pekny ale vubec se v tom nevyznam ja nepotrebuju menit heslo uzivatele do sekce administrace ale Me staci pres administraci zmenit heslo do administrace a aby se tim vsechno zmenilo v tech odkazech problem je ze heslo odesilam <form method='post'> a ne get ale furt to nechapu jak je mozny ze k tomu potrebuju za tim odkazem mit to heslo aby me to pustilo do toho obsahu case je pravda ze case odesilam pomoci get ale to je asi normlani
<?
 switch ($_GET[id]) {
    default:
          echo "<center>
    <h4><from method='post'>
<psan style='color:red'>Přihlášen jako : $_COOKIE[ucet] </span>
  <br><br><br><br>
<a href='?id=info-user&pass=589602'>Informace o uživatelých</a><br><br>
<a href='?id=del-user&pass=589602'>Vymazat Uživatele</a><br><br>
<a href='?id=add-novinky&pass=589602'>Přidat Novinku</a><br><br>
<a href='?id=add-user-body&pass=589602'>Přidat Uzivatele do databaze 'Body'</a><br><br>
<a href='?id=reply-user-body&pass=589602'>Zmena Bodu k Uzivatelum</a><br><br>
<a href='?id=info-user-body&pass=589602'>Informace o Bodech</a><br><br>
<a href='?id=del-user-body&pass=589602'>Vymazani Uzivatele z Tabulky 'Body'</a><br><br>
<a href='?id=add-soutez&pass=589602'>Přidat souťež</a><br><br>
<a href='?id=soutez&pass=589602'>Souteze (Uprava soutezniho pole)</a><br><br>
<a href='?id=diskuze&pass=589602'>Diskuze Prehled a ID</a><br><br>
<a href='?id=del-diskuze&pass=589602'>Vymazat z Diskuze Příspevek</a><br><br>
<br>


            </form>
       ";
        break;

Mam to reseny takhle ale to heslo tam musi byt jinak se mi neukaze obsah jak uz jsem psal
tiso
Profil
Venushja - keď už využívaš COOKIE, prejdi na SESSION, a nerob takéto hrozné veci s GET
srigi
Profil
Pochopil som to tak, ze info o prihlasenosti si Venushja prenasa v URL. Velmi zla technika, najma v dobe ked to vsetci riesia cez SESSIONS. Odporucam prepisat.
Venushja
Profil
No ja za to nemuzu nevim ze se do case muze dat i switch ($_POST[id])
Nox
Profil
Venushja
Proč by nešlo :) je to normální proměnná, a mrkni se na sessions

A máš tam psan místo span a trochu si nastuduj kódování (html, css) protože to je hrozné:) nebo to dělej přes Smarty
peta
Profil
Venushja
Konkretni kod, slava. Ale porod ho z tebe vydolovat :)
1. prihlaseni obvykle resim pres SESSION cz.php.net/session

2.
<from method='post'>
FROM neni html tag
<psan style='color:red'>
PSAN neni html tag
Kazdou generovanou stranku si projed validatorem HTML!!! Bez toho se nemuzes polehat na to, ze mas dobry HTML kod a tim padem zbytecne hledat problem v PHP.

3. FORM odesila pouze prvky INPUT, SELECT, TEXTAREA
Kliknutim na odkaz se FORM neodesila, pokud nemas u odkazu javascripte na onclick, ktery odesila formular, coz je trosku nesikovne, ale dalo by se tim neco poresit...
Odkaz odesila metodou GET vse, co je v href=

4. pokud chces vedet, co je v $_POST, pak si to vypis:
print_r($_POST);
echo ($_POST['id']);
var_dump nebo podobna funkce

5. pokud to server umoznuje, je lepsi nastavit ini_php() promennou trans_id nebo neco tak. Nemam ted projekt po ruce a u vetsiny serveru to nejde, takze si nevzpomenu presne na nazev.
Dela to pak to, ze do kazdeho FORM prida INPUT type=hiden session name a id a ke kazdemu odkazu prida session name a id

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: