Nejste přihlášeni
Stránky 1
Mám problém, napsal jsem si login script, ale nefunguje mi tu. Chybu to nehlásí žádnou. Na localhostu mi jede vše OK.
Offline
register globals jsou vypnuté viz http://endoratest.mzf.cz/phpinfo.php
IT portál efacebook.cz, seo katalog webů
Offline
Presne tak, sú vypnuté na všetkých 3 serveroch:
- server endora: http://srv1.endora.cz/phpinfo.php
- server zajicek: http://srv2.endora.cz/phpinfo.php
- server slonice: http://srv3.endora.cz/phpinfo.php
Offline
A jak to mám teda udělat Ani když si platim plusko nejsou?
Offline
muzete si je aktivovat pomoci htaccess ... viz faq
Offline
Tak jsem na první řádek ještě před RewriteEngine On přidal php_value register_globals "on" , ale stále to nefunguje! Jaký je důvod, že je to defaultně vypnuto?
Offline
protože je to bezpečnostní riziko
nemá tam být php_value register_globals "on"
ale
php_flag register_globals on
IT portál efacebook.cz, seo katalog webů
Offline
OK. Poradil by mi tedy někdo, jak řešit přihlášení bez tété "fičury"??
Offline
Offline
špatně si mne pochopil. Chtěl jsem poradit, jak přihlašování upravit tak, abych nemusel užívat register_globals
Offline
Offline
Dělám na vlastním RS
<?php
include ("./db.php");
include ("./data.php");
mysql_connect ( $mysql_server, $mysql_user, $mysql_password );
mysql_select_db ( $mysql_db );
mysql_query ("SET NAMES 'utf8';");
if(isset($_POST['submit'])){
$SElogin = $_POST['lgn'];
$pwd = $_POST['pwd'];
$SEpass = md5($pwd);
if($SElogin=="" OR $SEpass==""){ echo "<p>Nebyly vyplněny všechny údaje!</p>";}
else{
$result=mysql_query("SELECT * FROM users WHERE login='$SElogin' AND password='$SEpass'");
$count=mysql_num_rows($result);
if($count==1){
session_register("SElogin");
session_register("SEpass");
header("location: http://".$_SERVER['SERVER_NAME']."/admin/index.php");
}else {
echo "<p>Špatné jméno nebo heslo!</p>";
}
}
}
?>
Offline
session_register() - táto funkcia je zastaralá pre PHP 5.3.x, vhodná je pre verziu PHP nižšiu ako 4.1.0
Ak chceš, aby tvoje skripty nebrali ohľad na register_globals, musíš namiesto toho použiť $_SESSION polia.
register_globals je nastavenie servera, pokiaľ je zapnuté tak sa ti premenné zlučujú, čiže pošleš cez GET nejakú premennú napríklad ?login=uzivatel a v PHP kóde ju použiješ ako $login, pokiaľ je register_globals vypnuté tak premenná $login bude prázdna a text uzivatel nájdeš len v premennej $_GET['login']
Offline
ale posílat přes GET takovéto věci mi přijde ještě víc nebezpečný než toto!
Offline
To bol príklad, to samé platí pre posielanie cez POST, kde keď pošleš do premennej login text uzivatel tak pri vypnutom register_globals ten text nájdeš len v premennej $_POST['login'] a nie v $login
Offline
ok chápu. Takže jsem to upravil, ale mám problém. Vždy se to odešle. Tzv ikdyž nevyplnim nějaké políčko, tak mi ta chyba nevyskočí!
$nick = mysql_real_escape_string($_POST["nick"]);
$pass = mysql_real_escape_string($_POST["heslo"]);
$md5pass = md5($pass);
if($nick==""){ echo "<p>Nebyl vyplněn nick!</p>";}
elseif($pass==""){echo"<p>Nebylo vyplněno heslo</p>";}
else{
....... */ zpracování kodu - vytoření session*/
Offline
Myslím že funkcia mysql_real_escape_string() ti tam je zbytočná keďže sa jedná u užívateľa o jedno slovo a u hesla je to to samé. Tá funkcia je dobrá pri posielaní dlhých reťazcov kde sú v texte odriadkovania a podobne.
Ja to robím približne takto:
if (($meno)&($heslo)&($prihlasenie))
{
$result = @mysql_query("SELECT id, name, pass, mail FROM users WHERE mail='".$meno."'");
list($id, $name, $pass, $mail) = mysql_fetch_row($result);
if ($heslo == $pass)
{
$_SESSION['logged'] = "LoggedOK";
$_SESSION['id'] = $id;
$_SESSION['name'] = $meno;
$_SESSION['mail'] = $mail;
header("Location: /");
}
else
{
header("Location: /chybne-prihlasenie");
}
}
Samozrejme je na tebe čo je pre teba jednoduchšie
Offline
Díky za ukázku, ale mě pořád vrtá hlavou proč když nevyplnim nějakou ikonu, tak mi to nenapíš tu chybu. Prostě se to zpracuje! Jinak mysql_real_escape_string() jsem smazal.
Offline
Nemám, ale napadlo mne přidat die(); a funguje to jen z části. Sice to vypíše daný error, ale nezobrazí se html kod > die(); ukončí načítání!
Offline
Offline
Stránky 1