!shine! Posted March 1, 2011 Report Share Posted March 1, 2011 (edited) Man ir nelielas problēmas ar ipb login skriptu. Pie vainas noteikti ir tas ka izmantoju jauno IPB 3 versiju. Katrā ziņā skripts itkā strādā ievados login,pass parāda ka esmu veiksmīgi ielogojies forumā uz ipb main accounta par itkā parādās viss tākā vajag ,bet kā meiģinu ielogoties ar parastu lietotāju arī parādās ka esmu veiksīgi ielogojies forumā arī parāda ka esmu ielogojies, bet skripts nenostrādā un sākumlapā velaizvien rāda lai ievadu login,pass. Manu prāt pie vainas ir tas ka ipb 3 izvada savādāk datus nekā ipb 2.3.6, bet nu tad jau itkā manam main accountam arī neko nerādītu, bet rāda. Skripts: <?php mysql_connect("localhost","root","parole"); mysql_select_db("forums"); if(isset($_COOKIE['member_id'])){ $get=mysql_query("SELECT * FROM `vnk_members` WHERE '".intval($_COOKIE['member_id'])."'") or die(mysql_error()); $id=$_COOKIE['member_id']; $dati="SELECT * FROM `vnk_members` WHERE id = $id LIMIT 1"; $dati1=mysql_query($dati) or mysql_error(); $dati2=mysql_fetch_array($dati1); $avatar= "SELECT * FROM `vnk_member_extra` WHERE id = $id LIMIT 1"; $avatar1=mysql_query($avatar) or mysql_error(); $avatar2= mysql_fetch_array($avatar1); $udata=mysql_fetch_object($get); if($udata->member_login_key==$_COOKIE['pass_hash']) { $logout = md5($dati2['email']."&".$dati2['member_login_key']."&".$dati2['joined']); $bilde = ($avatar2['avatar_location']); echo " <center>Sveiks ".$udata->members_display_name."</center><br> <ul class='colomn'> <li><a href='{$link_addnews}'><img src='{THEME}/images/add_news.gif' alt='Pievienot jaunumus' />Pievienot jaunumus</a></li> <li><a href='f/index.php?app=core&module=usercp&tab=members'><img src='{THEME}/images/profile.gif' alt='Tavs profils' />Labot profilu</a></li> <li><a href='f/index.php?app=members&module=messaging'><img src='{THEME}/images/message.gif' alt='VД“stules' />VД“stules</a></li> </ul> <ul class='colomn'> <li><a href='{$link_favorites}'><img src='{THEME}/images/tabs.gif' alt='FavorД«ti' />FavorД«ti</a></li> <li><a href='{$link_stats}'><img src='{THEME}/images/statistic.gif' alt='Statistika' />Statistika</a></li> <li><a href='f/index.php?app=core&module=search&do=active'><img src='{THEME}/images/massage_view.gif' alt='Jaunie posti' />Jaunie posti</a></li> </ul>"; }else{ echo " <div class='loginbox'> <form method='post' action='f/index.php?app=core&module=global§ion=login&do=process&return=http://localhost/' name='LOGIN'> <div class='lfield'> <img class='logform_login' src='{THEME}/images/spacer.gif' alt='Логин' /> <div><input id='username' class='input_text' name='username' type='text'></div> </div> <div class='lfield'> <img class='logform_pass' src='{THEME}/images/spacer.gif' alt='Пароль' /> <div><input id='password' class='input_text' name='password' type='password'></div> </div> <input value=' ienakt ' name='CookieDate' type='submit'> <div class='olinks'><a href='/index.php?do=register' title='ReДЈistrДЃcija'>ReДЈistrДЃcija</a> | <a href='/index.php?do=lostpassword' title='Aizmirsi paroli?'>Aizmirsi paroli?</a></div> </form></div>"; } }else{ echo " <div class='loginbox'> <form method='post' action='f/index.php?app=core&module=global§ion=login&do=process&return=http://localhost/' name='LOGIN'> <div class='lfield'> <img class='logform_login' src='{THEME}/images/spacer.gif' alt='Логин' /> <div><input id='username' class='input_text' name='username' type='text'></div> </div> <div class='lfield'> <img class='logform_pass' src='{THEME}/images/spacer.gif' alt='Пароль' /> <div><input id='password' class='input_text' name='password' type='password'></div> </div> <input value=' ienakt ' name='CookieDate' type='submit'> <div class='olinks'><a href='/index.php?do=register' title='ReДЈistrДЃcija'>ReДЈistrДЃcija</a> | <a href='/index.php?do=lostpassword' title='Aizmirsi paroli?'>Aizmirsi paroli?</a></div> </form></div>"; } ?> + var kāds iedot http://paste.php.lv/4325e0e4b7018e8c0f4727d534f97774?lang=php ši ipb online lietotāja skripta pārējos divus failus? Agrāk bija pašām bet pazuduši un visi linki kur meklēju ir dead. Jau iepriekš paldies. Edited March 1, 2011 by !shine! Quote Link to comment Share on other sites More sharing options...
m8t Posted March 1, 2011 Report Share Posted March 1, 2011 Nedroši, nedroši, nedroši. $id=mysql_real_escape_string($_COOKIE['member_id']); vai arī vari izdarīt gandrīz to pašu ar intval(). Neatradu, kur tu iestati šim mainīgajam vērtību. $_COOKIE['pass_hash'] Ā, jā, un... zem $get = ... $get... if(mysql_num_rows($get) > 0) { //yay,viss kārtībā, turpinam skriptu } else { //šāds lietotājs nepastāv } Quote Link to comment Share on other sites More sharing options...
!shine! Posted March 1, 2011 Author Report Share Posted March 1, 2011 Itkā salaboju vienīgais kas bija jaizmana $get=mysql_query("SELECT * FROM `vnk_members` WHERE id='".intval($_COOKIE['member_id'])."'") or die(mysql_error()); uz $get=mysql_query("SELECT * FROM `vnk_members` WHERE member_id='".intval($_COOKIE['member_id'])."'") or die(mysql_error()); Nedroši, nedroši, nedroši. $id=mysql_real_escape_string($_COOKIE['member_id']); vai arī vari izdarīt gandrīz to pašu ar intval(). Nevari mazliet vairāk izskaidrot ko tu ar to domāji? P.S starp citu velviens mazs jautājums, ir kautkāda iespēja aktivizēt ipb bb kodus šajā ipb jaunumu skriptā? http://paste.php.lv/af113278e484995f8277b9ccdac6971e?lang=php Quote Link to comment Share on other sites More sharing options...
m8t Posted March 1, 2011 Report Share Posted March 1, 2011 Nevari mazliet vairāk izskaidrot ko tu ar to domāji? Ja tu nenodrošinies pret SQL injecēm (tādām lietiņām, kā ' '' OR 1=1 '), tad tā pati vērtība tiek pievienota tavam sql kverijam. Rezultāts: $avatar= "SELECT * FROM `vnk_member_extra` WHERE id = '' OR 1=1 LIMIT 1"; Tieši tādēļ mēs izmantojam mysql_real_escape_string, lai pievienotu svītriņu katra quote (", ') prikšā, lai tas nestrādātu šeit. Protams, vari arī izmantot intval(), kas pārbauda, vai vērtība nav cipars (kas šajāgadījumā der). Quote Link to comment Share on other sites More sharing options...
!shine! Posted March 1, 2011 Author Report Share Posted March 1, 2011 Tad vienkārši $id=$_COOKIE['member_id']; izmainīt par? $id=intval($_COOKIE['member_id']); Velviens jautājums ar to login skriptu kā ipb 3 darbojas log out? Ir kāda nojausma kā to ievietot šajā skriptā? Quote Link to comment Share on other sites More sharing options...
labaiss Posted March 1, 2011 Report Share Posted March 1, 2011 (edited) iespējams - tiek beigta sesija (tā parasti ir, par šo konkrēti nezinu :D) paskaties kodā. Edited March 1, 2011 by labaiss Quote Link to comment Share on other sites More sharing options...
m8t Posted March 1, 2011 Report Share Posted March 1, 2011 @!shine! Jā, tas ir tieši tik vienkārši, bet drošības līmenis uzreiz skyrocket. Teju jebkuram login skriptam strādās šim ārkārtīgi sarežģītais logout skripts. if(isset($_COOKIE)) unset($_COOKIE); if(isset($_SESSION)) unset($_SESSION); header('Location: login.php'); Quote Link to comment Share on other sites More sharing options...
!shine! Posted March 1, 2011 Author Report Share Posted March 1, 2011 (edited) Jā, tas ir tieši tik vienkārši, bet drošības līmenis uzreiz skyrocket. Tas bija sarkasms? <_< m8t, starp citu izskatās, ka esi ļoti zinoš - ir vēl kautkāda nojausma kas tajā ipb jaunumu skriptā ir noticis? Nerunājot par bbcodiem, kas būtu mazākā problēma, man šis jaunumu skripts izvelk itkā to ko vajag no noteiktā foruma ID, bet viņš to visu izvelk pa 3reizēm piemērām man ir uzlikts ka 1 lapā izvelk 2 jaunumus, kas arī notiek, bet pēc abiem jaunumiem parādās itkā jauns jaunumu skripts, kas atkal izvelk 2 jaunumus un tas pats notiek arī trešo reizi. Pēc tam aizejot uz 2 jaunumu lapu, man parādās 3 jaunumus kurš atkal tiek parādīts 3 reizes. http://paste.php.lv/af113278e484995f8277b9ccdac6971e?lang=php Edited March 1, 2011 by !shine! Quote Link to comment Share on other sites More sharing options...
m8t Posted March 1, 2011 Report Share Posted March 1, 2011 @!shine! Nē, tad es biju nopietns. Ar tādu vienu funkciju tu liki drošības līmenim vienkārši pamatīgi palēkties uz augšu. Par tavu jaunum sistēmu: Tu esi izveidojis kaut ko +- šādu //while() vai foreach() funkcija, kura norisinās 3 reizes. //Iespējams, ka tur tu velc laukā kaut kādu citu ierakstu, kā piemēram komentārus while() { $query = mysql_query("..."); //rekur tu velc laukā konkrēto jaunumu $data = mysql_fetch_array($query); echo $data['jaunums']; // un te tu viņu izkopē 1 reizi, bet, par cik, viņš ir iekš cikla, kas notiek 3 reizes - izkopējas 3 "jaunumi" (3 * 1 = 3) } Ko darīt? Nehranizē to lielo ciklu vai arī uzliec limitu (pieņemu, ka tev tur kaut kas vēl tiek vilkts laukā no datubāzes, tad kverijā vari izmantot "LIMIT 1") Quote Link to comment Share on other sites More sharing options...
!shine! Posted March 1, 2011 Author Report Share Posted March 1, 2011 Nedomāju ka vaina ir kodā, jo esmu apskatijies un izmeiģinajis pāris citus ipb jaunumu kodus ar tiem notiek tas pats. Ka visi jaunumi no konkreta foruma id parādās 3 reizes. Lai gan arī forumā nevajadzētu būt problēmai tikko uzinstalēts - tīrs. Vienīgi tikko rakājoties pa phpmyadmin pamaniju zem vnk_topics tabulas zemāk More than one INDEX key was created for column `forum_id` Ir kāda nojausma ko tas varētu nozīmēt? Quote Link to comment Share on other sites More sharing options...
xPtv45z Posted March 1, 2011 Report Share Posted March 1, 2011 (edited) Vairāk kā viens indekss izveidots priekš kolonas forum_id. :D Un jā, ja kaut kas nepareizi rādās, tad vaina nav kodā. Mana paziņas māte, dzirdēja no kaimiņienes, kurai to pastāstīja pastnieks, kam to izstāstīja dēla pasniedzēja sievas vecāki, ka ir parādījusies kaut kāds gļuks LCD monitoriem, kas liek IPB foruma jaunumus attēlot 3 reizes. Dažiem palīdzot printera draiveru pārinstalēšana. Edited March 1, 2011 by xPtv45z Quote Link to comment Share on other sites More sharing options...
!shine! Posted March 1, 2011 Author Report Share Posted March 1, 2011 Vairāk kā viens indekss izveidots priekš kolonas forum_id. :D Un jā, ja kaut kas nepareizi rādās, tad vaina nav kodā. Mana paziņas māte, dzirdēja no kaimiņienes, kurai to pastāstīja pastnieks, kam to izstāstīja dēla pasniedzēja sievas vecāki, ka ir parādījusies kaut kāds gļuks LCD monitoriem, kas liek IPB foruma jaunumus attēlot 3 reizes. Dažiem palīdzot printera draiveru pārinstalēšana. Gudri... un kas tev tagad neiepatikās? Ja nav ko rakstīt, tad labak neraksti. Quote Link to comment Share on other sites More sharing options...
m8t Posted March 1, 2011 Report Share Posted March 1, 2011 Nedomāju ka vaina ir kodā, [..] Quote Link to comment Share on other sites More sharing options...
!shine! Posted March 1, 2011 Author Report Share Posted March 1, 2011 (edited) Ne kodā, bet news skriptā. :D Bet nu pa googli parakājos atradu vēl kādus 4 dažādus news skriptus visiem viena un tā pati problēma. EDIT:Pat lūk šis pa visam parastais news skripts izmet man 3 jaunumu logus! <?php $forums = "http://localhost/f"; // foruma atra?anas $limits = "1"; // limits $forumaID = "2"; // foruma id no kura javelk ara jaunumi $host = "localhost"; // parasti localhost $dbname = "f"; // db name $dbuser = "root"; // db username $dbpass = "parole"; // db user pw $link = mysql_connect($host, $dbuser, $dbpass) or die("Neizdevas piekonekteties ?: " . mysql_error()); mysql_select_db($dbname) or die("neizdevas piekonekteties ?"); mysql_query("text/html; charset=utf8"); // charseti // dabonam datus no DB $kverisdivi = mysql_query("SELECT * FROM vnk_topics WHERE forum_id=".$forumaID." ORDER BY start_date DESC LIMIT ".$limits."") or die(mysql_error()); echo "<h1></h1>"; // izvadam jaunumus while($row = mysql_fetch_array( $kverisdivi )) { $rowis = mysql_fetch_array( mysql_query("SELECT * FROM vnk_posts WHERE topic_id = ".$row['tid']." ORDER by post_date LIMIT ".$limits."")); $datums = $row['start_date']; $piev_datums = date("d/m/Y ",$datums); echo "<c href=\"$forums/index.php?showtopic=".$row['tid']."\">".$row['title']."</c> <strong>".$row['description']."</strong><br />"; echo "<div>".$rowis['post']."</div><br /><hr>"; echo "<div><span style='color:black'>Pievienots:</span> $piev_datums | <span style='color:black'>Autors:</span> <a href=\"$forums/index.php?showuser=".$row['starter_id']."\">".$row['starter_name']."</a> | <span style='color:black'>Komentari:</span> (<a href=\"$forums/index.php?showtopic=".$row['tid']."&view=getlastpost\">".$row['posts']."</a>) | <hr><br>";; } Edited March 1, 2011 by !shine! Quote Link to comment Share on other sites More sharing options...
!shine! Posted March 2, 2011 Author Report Share Posted March 2, 2011 Piedodiet par dubultpostu, bet to mistisko erroru ar 3 jaunumiem salaboju, tgd vēlētos nedaudz vēl palīdzības ar to jaunumu skriptu Jaunumu skripts kā lai viņam pievieno bbcodus? Tos pašus kas ir forumā. 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.