pilots Posted May 8, 2010 Report Share Posted May 8, 2010 $user_count = @mysql_fetch_assoc(@mysql_query("SELECT count(*) AS total FROM users WHERE type!='0'")); echo $user_count['total']; Šādi skaitu cik ir lietotāji (type!=0 ir lai neiekļauj dzēstos). Vai šis variants ir ok, vai var īsākā ceļā šo iegūt, un vai šis nebremzēs, ja būs daudz lietotāju? Un vai nevar aprēķināt tā, ka es izvadīšanai lietotu tikai $user_count nevis $user_count['total']? Quote Link to comment Share on other sites More sharing options...
marcis Posted May 8, 2010 Report Share Posted May 8, 2010 Kverijā int vērtības nav jānorāda pediņās (pieņemu, ka `type` ir cipars). Maģiskais @ simbols strādā uz visu rindiņu, nav jēgas viņu atkārtoti bāzt priekšā. mysql_result() $user_count = mysql_result(mysql_query("SELECT count(*) FROM users WHERE type!=0", 0, 0); Indexu uz type un nekas īpaši nebremzēs. Taču tik un tā iesaku uz kaut kādu laiku nokešot rezultātu, jo diezvai ir tik svarīgi zināt konkrētu ciparu konkrētajā sekundē. Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted May 8, 2010 Report Share Posted May 8, 2010 To @ vispār nevajadzētu... Quote Link to comment Share on other sites More sharing options...
pilots Posted May 8, 2010 Author Report Share Posted May 8, 2010 Paldies par atbildi. Minūtes 10 būros kamēr pazudušo iekavu izdomāju ielikt. :) Quote Link to comment Share on other sites More sharing options...
Kaklz Posted May 9, 2010 Report Share Posted May 9, 2010 Silts ieteikums - pēc iespējas ātri aizmirsti tāda '@' eksistenci un pārstāj viņu lietot. 99.99% gadījumu viņš nav vajadzīgs un var radīt situācijas, kurās tu vēl nez cik stundas meklēsi kādu pazudušo simbolu.. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted May 9, 2010 Report Share Posted May 9, 2010 Bet tomēr ir situācijas, kur šamo vajag... =D Es vismaz tā domāju... =) Quote Link to comment Share on other sites More sharing options...
mounkuls Posted May 9, 2010 Report Share Posted May 9, 2010 Bet tomēr ir situācijas, kur šamo vajag... Aha, tikai atceries, ka tad pat vārnu uzrādīs rindiņas bieži vien pārsimts zemāk kodā. Meklē nu! Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted May 9, 2010 Report Share Posted May 9, 2010 Kāds varētu būt tās situācijas piemērs? Quote Link to comment Share on other sites More sharing options...
daGrevis Posted May 9, 2010 Report Share Posted May 9, 2010 Es nesaku, ka tā ir. Es tikai nezinu, kā lai savādāk novērš paziņojumu. Ja ievadītie dati "login.php" ir pareizi, tad ir ok! =) if(!combo(get__ID__from__username($_POST['username']), sha1($_POST['password']))) { // Invalid username/password. } ...pretējā gadījumā tiek mests paziņojums, ko izraisa get__ID__from__username(). function get__ID__from__username($username) { $SQL = 'SELECT `ID` FROM `users` WHERE `username`="' . $username . '"'; $query = mysql_query($SQL); return @mysql_result($query, 0); } Tāpēc tur ieliku "ļaunuma zīmi"... =D P.S. Zinu, ka mans kods ir līks. Tāpēc jau arī mācos! =) Quote Link to comment Share on other sites More sharing options...
waplet Posted May 9, 2010 Report Share Posted May 9, 2010 Pirmkārt, kas ir combo? un nafig nav antiinjection? Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted May 9, 2010 Report Share Posted May 9, 2010 1) Nav mysql_real_escape_string 2) Kādēļ jāliek 50 underscores? 3) return mysql_num_rows() > 0 ? mysql_result($query, 0) : false; 4) Kvērijam galā var piemest LIMIT 1 Quote Link to comment Share on other sites More sharing options...
daGrevis Posted May 9, 2010 Report Share Posted May 9, 2010 1) Nav mysql_real_escape_string Vai tas šis te nav jāizmanto tikai saglabājot ko DB?? Es tā biju iedomājies, jo, ja DB glabājās tikai labas lietas, tad jau nav no kā bīties... Vai ne tā? Quote Link to comment Share on other sites More sharing options...
daGrevis Posted May 9, 2010 Report Share Posted May 9, 2010 Pirmkārt, kas ir combo? function combo($ID, $password) { $SQL = 'SELECT `ID` FROM `users` WHERE `ID`="' . $ID . '" and `password`="' . $password . '" LIMIT 1'; $query = mysql_query($SQL); if(mysql_num_rows($query) == true) { return true; } } Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted May 9, 2010 Report Share Posted May 9, 2010 http://uk.php.net/mysql_real_escape_string Nē ne tā - tas novērš SQL inekcijas. Un šādu tavu autorizāciju ar to var ļoti viegli uzlauzt un/vai nograuzt. Te var palasīties - http://en.wikipedia.org/wiki/SQL_injection Un tu tur bezjēdzīgi lieto divus kvērijus, kuru vietā var izmantot vienu, starpcitu. Quote Link to comment Share on other sites More sharing options...
Kaklz Posted May 10, 2010 Report Share Posted May 10, 2010 Vai tas šis te nav jāizmanto tikai saglabājot ko DB?? Es tā biju iedomājies, jo, ja DB glabājās tikai labas lietas, tad jau nav no kā bīties... Vai ne tā? Nē, tā pavisam noteikti nav. Pamēģini izpildīt šādu joku: combo('" OR 1 --', 'raksti šeit dajebko, kas ienāk prātā, jo šis netiek vairs nemaz ņemts par pilnu :)'); Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.