Pereiti prie turinio

Prisijungimas su didžiosiom/mažosiom raidėm.


Rekomenduojami pranešimai

Sveiki, kaip galima būtų padaryt, kad tarkim, jeigu į mano mySQL buvo įterpas nickname: ,,Sprunkas'' tai tarkim galima būtų prisijungti ne tik, kad ir su ,,Sprunkas'' bet ir su ,,SPRUNKAS'', ,,sprunkas'' ir t.t ? Štai mano PHP kodas yra:

 

if(isset($_POST['jungtis'])) {

if($_POST['login_slapyvardis'] != "" && $_POST['login_slaptazodis'] != "") {

$login_slapyvardis = mysql_real_escape_string($_POST['login_slapyvardis']);
$login_slaptazodis = mysql_real_escape_string($_POST['login_slaptazodis']);
$apsaugotaslogin_slaptazodis = md5($login_slaptazodis);

$mysql = mysql_query("SELECT * FROM ucp_users WHERE name='$login_slapyvardis'") or die(mysql_error());
$mysqlskc = mysql_num_rows($mysql);

	if($mysqlskc > 0) {

	$mysqli = mysql_fetch_array($mysql);

		if($mysqli['password'] == $apsaugotaslogin_slaptazodis) {

		$_SESSION['Logged'] = $mysqli['id'];
		$ip = $_SERVER['REMOTE_ADDR'];
		mysql_query("UPDATE ucp_users SET lastip = '$ip' WHERE id = '$mysqli[id]'");
		header('Location: /home');

		} else {

		echo "<div class='error'>Įvestas vartotojo slaptažodis neteisingas!</div>";

		}

	} else {

	echo "<div class='error'>Įvestas vartotojo slapyvardis duomenų bazėje neegzistuoja!</div>";

	}

} else {

echo "<div class='error'>Palikote tuščių laukelių!</div>";

}

       }

echo "<input type='text' style='width:98%' name='login_slapyvardis' class='input' placeholder='Slapyvardis' /><br/>
<input type='password' name='login_slaptazodis' style='width:98%' class='input' placeholder='Slaptažodis'/><br/>
<input type='submit' name='jungtis' style='width:50%' class='button1' value='Prisijungti' /><br/><br/>
- <a href='/passreset'>Pamiršote slaptažodį?</a>
</form>";

}

 

Vargau daug valandų prie šio uždavinio, bet niekaip nesugebėjau išspręsti...

 

Dėkui iš anksto!

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na pagrinde tai jo, galvojau apie tai, bet bėda tame, kad, jeigu vesi didžiosiomis raidėmis neprisijungs + man reikia, kad man reikia, kad atvaizduotų realų nicką, t.y visos mažosios ir didžiosios, o ne tik mažosios, tai man yra didelis minusas taip daryt.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aš vat dabar šitą funkciją naudoju:

 

 

$mysql = mysql_query("SELECT * FROM ucp_users WHERE name='$login_slapyvardis'") or die(mysql_error());

$mysqlskc = mysql_fetch_assoc(mysql_query("SELECT * FROM ucp_users WHERE name='$login_slapyvardis'"));

 

if(strtolower($mysqlskc['name']) == strtolower($login_slapyvardis)) {

 

 

Kur paryškinta tai pakeičiau šitą funkciją, bet kaip supratau man iš mysql ištraukus nesumažina name... Gal žinot kame bėda?

Redagavo Sprunkas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tu pirmiausiai ieškai pagal nesumažintą vardą (ir tikiesi, kad ras), o mažini tik paskui. Prasta logika.

 

Šiaip jau MySQL lookupai _ci koduotėse ir taip turėtų būti nepriklausomi nuo didžiųjų/mažųjų raidžių (CI ir reiškia Case Insensitive).

 

Nenaudok ext/mysql.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tu pirmiausiai ieškai pagal nesumažintą vardą (ir tikiesi, kad ras), o mažini tik paskui. Prasta logika.

 

Šiaip jau MySQL lookupai _ci koduotėse ir taip turėtų būti nepriklausomi nuo didžiųjų/mažųjų raidžių (CI ir reiškia Case Insensitive).

 

Nenaudok ext/mysql.

 

Pagrindinis kodo gabalas:

 

			
if(isset($_POST['jungtis'])) {

if($_POST['login_slapyvardis'] != "" && $_POST['login_slaptazodis'] != "") {
$login_slapyvardis = mysql_real_escape_string($_POST['login_slapyvardis']);
$login_slaptazodis = mysql_real_escape_string($_POST['login_slaptazodis']);
$apsaugotaslogin_slaptazodis = md5($login_slaptazodis);

$mysql = mysql_query("SELECT * FROM ucp_users WHERE name='$login_slapyvardis'") or die(mysql_error());
$mysqlskc = mysql_fetch_array(mysql_query("SELECT * FROM ucp_users WHERE name='$login_slapyvardis'"));
$login_sumazintas = strtolower($login_slapyvardis);
$login_db = strtolower($mysqlskc['name']);

	if($login_db == $login_sumazintas) {

	$mysqli = mysql_fetch_array($mysql);

		if($mysqli['password'] == $apsaugotaslogin_slaptazodis) {

		$_SESSION['Logged'] = $mysqli['id'];
		$ip = $_SERVER['REMOTE_ADDR'];
		mysql_query("UPDATE ucp_users SET lastip = '$ip' WHERE id = '$mysqli[id]'");
		header('Location: /home');

 

Turbūt dar nematei šio kodo. Lyg ir viską gerai padariau...

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pagrindinis kodo gabalas:

 

			
if(isset($_POST['jungtis'])) {

if($_POST['login_slapyvardis'] != "" && $_POST['login_slaptazodis'] != "") {
$login_slapyvardis = mysql_real_escape_string($_POST['login_slapyvardis']);
$login_slaptazodis = mysql_real_escape_string($_POST['login_slaptazodis']);
$apsaugotaslogin_slaptazodis = md5($login_slaptazodis);

$mysql = mysql_query("SELECT * FROM ucp_users WHERE name='$login_slapyvardis'") or die(mysql_error());
$mysqlskc = mysql_fetch_array(mysql_query("SELECT * FROM ucp_users WHERE name='$login_slapyvardis'"));
$login_sumazintas = strtolower($login_slapyvardis);
$login_db = strtolower($mysqlskc['name']);

	if($login_db == $login_sumazintas) {

	$mysqli = mysql_fetch_array($mysql);

		if($mysqli['password'] == $apsaugotaslogin_slaptazodis) {

		$_SESSION['Logged'] = $mysqli['id'];
		$ip = $_SERVER['REMOTE_ADDR'];
		mysql_query("UPDATE ucp_users SET lastip = '$ip' WHERE id = '$mysqli[id]'");
		header('Location: /home');

 

Turbūt dar nematei šio kodo. Lyg ir viską gerai padariau...

Visi matė tą tavo kodą.

LCASE() naudok funkciją ir aš pasikartosiu. Ir Silkės geras pastebėjimas, o kad naudoji $mysqli kintamąjį, nereiškia kad ir naudoji http://php.net/manual/en/book.mysqli.php

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ir nenaudok MD5 slaptažodžių hešavimui. Ir apskritai, ne į temą tie tavo lowercase ar dar kažkas, darkart sakau: stringų paieška ir taip turi būti case insensitive. Pimiausiai pats patikrink, ar iš tikrųjų tau ji neveikia kaip case insensitive (pvz. per mysql CLI ar phpmyadmin). Jei neveikia, duok duomenų bazės info.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...