Jump to content
php.lv forumi

IPB login


!shine!

Recommended Posts

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

 

a73sll14bk4i22lw3213.png

 

,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&section=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&section=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 by !shine!
Link to comment
Share on other sites

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
}

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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).

Link to comment
Share on other sites

@!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');

Link to comment
Share on other sites

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 by !shine!
Link to comment
Share on other sites

@!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")

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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 by xPtv45z
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

facepalm.jpg

 

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 by !shine!
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

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

Loading...
×
×
  • Create New...