php.lv forumi: problēmas ar switch un id - php.lv forumi

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

problēmas ar switch un id uz hosta

#1 User is offline   eude Icon

  • Māceklis
  • Pip
  • Group: Reģistrētie lietotāji
  • Posts: 27
  • Joined: 2009.11.29

Posted 2010.02.08 22:09

Kamēr visu taisīju un testēju uz sava datora tikmēr viss bija kārtībā. Taču uzliekot uz hosta (hostplex.eu) sākās problēmas, bet nevaru izdomāt, kas tieši ir pie vainas.
Tātad, man ir index fails, kurā ir galvenais switch ($f), ar kuru es rādu visu ko vēlos, šajā switchā ietilpst arī admina panelis, kurš, savukārt, pats satur citu switchu sevī. Skelets izskatās šāds:
$f = $_GET['f'];
switch($f){
[...]
case 'acp':
	$o = $_GET['o'];
	switch($o){
	[šeit ir visas admina funkcijas]
	}
break;
[...]
}

Tālākam piemēram ņemšu rakstu sekciju.
Manis rakstīto rakstu var apskatīt jebkurš, tāpēc tas ir ārpus otrā switcha, visi id un citi zvēri ir kārtībā, visu rāda.
Bet kad es cenšos labot vai dzēst kādu rakstu, tad man rāda, ka nepieciešams raksta id, lai gan id ir norādīts adresē.
Adrešu piemēri:
Vienkārši skatoties rakstu http://[domēns]/raksts/7/
Un cenšoties labot šo rakstu http://[domēns]/raksts/labot/7/
Es lietoju mod_rewrite. (gabals no htaccess faila zemāk).
RewriteRule ^raksts/([0-9]+)/$ ./?f=raksts&rid=$1 [QSA]
RewriteRule ^raksts/labot/([0-9]+)/$ ./?f=acp&o=editnews&rid=$1 [QSA]

Tā notiek ar visu, ko cenšos izmainīt caur admina paneli jeb visu, kas ir iekš otrā switcha.
Kamēr skatās rakstus, darbus galerijā tikmēr viss strādā, kā vajag.
Kas varētu būt par problēmu? Otrs switch? Hosts?

#2 User is offline   2easy Icon

  • Spama meistars
  • PipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 1,550
  • Joined: 2009.10.02

Posted 2010.02.08 22:30

[QSA,L]

turklāt samaini vietām abas rules, lai specifiskākā ir pirmā

This post has been edited by 2easy: 2010.02.08 22:33


#3 User is offline   eude Icon

  • Māceklis
  • Pip
  • Group: Reģistrētie lietotāji
  • Posts: 27
  • Joined: 2009.11.29

Posted 2010.02.08 22:49

Pieliku L tagu un samainīju vietām, nekaas nemainās. Rīt pamēģināšu uztaisīt atsevišķu failu admina panelim ar atsevišķu switchu, varbūt sanāks.

#4 User is offline   2easy Icon

  • Spama meistars
  • PipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 1,550
  • Joined: 2009.10.02

Posted 2010.02.08 22:54

varbūt adrese ir /raksts/labot/7 bez "/" beigās? ;)

vēl debugojot var izslēgt mod rewrite. varbūt gļuks ir kkur citur

#5 User is offline   briedis Icon

  • sideirb
  • PipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 1,188
  • Joined: 2005.01.15

Posted 2010.02.08 22:55

View Posteude, on 2010.02.08 22:49, said:

Pieliku L tagu un samainīju vietām, nekaas nemainās. Rīt pamēģināšu uztaisīt atsevišķu failu admina panelim ar atsevišķu switchu, varbūt sanāks.


print_r($_GET);
Neturi zināšanas zem pūra!

#6 User is offline   eude Icon

  • Māceklis
  • Pip
  • Group: Reģistrētie lietotāji
  • Posts: 27
  • Joined: 2009.11.29

Posted 2010.02.09 09:25

par to, lai beigās vienmēr būtu / esmu parūpējies iekš mod rewrite. esmu uzlicis, ka, ja nav beigās /, tad viņš redirecto uz adresi, pieliekot beigās / :)

nu man jau rāda, ka ir id :/
Array ( [f] => acp [o] => editnews [rid] => 7 )
bet lapas vidū rāda manis veidoto kļūdas paziņojumu, ka vajag id, lai labotu rakstu. :/

dzēšana tomēr darbojas, nedarbojas tikai labošana.

This post has been edited by eude: 2010.02.09 09:36


#7 User is offline   2easy Icon

  • Spama meistars
  • PipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 1,550
  • Joined: 2009.10.02

Posted 2010.02.09 09:28

View Posteude, on 2010.02.09 09:25, said:

par to, lai beigās vienmēr būtu / esmu parūpējies iekš mod rewrite. esmu uzlicis, ka, ja nav beigās /, tad viņš redirecto uz adresi, pieliekot beigās / :)

lol, es parasti daru tieši otrādi. ja beigās ir /, tad ņemu to nost
vienīgi ja ir arī parastie parametri (dažreiz tos vajag), tad gan ja beigās nav /, tad pielieku to klāt (lai starp path un "?" būtu /). bet tas tā, gaumes jautājums ^^

kr4 man ir viens standarta/universālais mod rewrite jebkurai web applikācijai (pārējā loģika/processings iekš php)
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* - [L]

RewriteCond %{QUERY_STRING} ^$
RewriteRule (.+)/$ $1 [R,L]

RewriteCond %{QUERY_STRING} .+
RewriteRule (.*[^/])$ $1/ [R,NE,L]

RewriteRule ^([a-z0-9-/]+?)/?$ ?nice=$1 [QSA]

View Posteude, on 2010.02.09 09:25, said:

nu man jau rāda, ka ir id :/
Array ( [f] => acp [o] => editnews [rid] => 7 )
bet lapas vidū rāda manis veidoto kļūdas paziņojumu, ka vajag id, lai labotu rakstu. :/

zna4it ar skeletu būs par maz, lai varētu tev palīdzēt ;)
kodu (kas pieņem lēmumu rādīt tevis veidoto kļūdas paziņojumu) studijā! :))

This post has been edited by 2easy: 2010.02.09 09:37


#8 User is offline   eude Icon

  • Māceklis
  • Pip
  • Group: Reģistrētie lietotāji
  • Posts: 27
  • Joined: 2009.11.29

Posted 2010.02.09 10:16

labot rakstu
	case 'editnews':
	$rid = $_GET['rid'];
		if($id==''){echo '<h3>Kļūda</h3><div class="left-c">Vajag raksta id, lai to labotu!</div>';}
		else{
		$result = mysql_query("SELECT * FROM news WHERE id=$rid") or die(mysql_error());  
		$row = mysql_fetch_array( $result );
		$post = $row['post'];
		$post = str_replace("&lt;","<","".$post."");
		$post = str_replace("&gt;",">","".$post."");
		echo '<h3>Labot rakstu</h3><div class="left-c">
				<form action="/raksts/labots/'.$rid.'/" method="post">
				Virsraksts<br /><input name="title" type="text" style="width:250px;" value="'.$row['title'].'"/><br />
				Raksts<br />
				<script>edToolbar("post"); </script>
				<textarea name="post" id="post" class="ed">'.$post.'</textarea><br />
				<input name="Submit" type="submit"  value="Labot"/>
				</form></div>';
		}
	break;

un dzēst
	case 'deletenews':
	$rid = $_GET['rid'];
		if($rid==''){echo '<h3>Kļūda</h3><div class="left-c">Vajag raksta id, lai to dzēstu!</div>';}
		else{
		mysql_query("DELETE FROM news WHERE id='".$rid."'") 
		or die(mysql_error());  
		echo '<h3>Raksti</h3><div class="left-c">Raksts dzēsts!</div>';
		}
	break;


edit: tikko pamanīju, ka man pie labošanas ir $id, nevis $rid. :D
tagad viss strādā.
pat nezinu kāpēc man tur pazuda r burts, jo failos, kas man stāv uz PC ir tur rid.
var slēgt ciet, paldies tik un tā ;)

This post has been edited by eude: 2010.02.09 10:21


#9 User is offline   2easy Icon

  • Spama meistars
  • PipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 1,550
  • Joined: 2009.10.02

Posted 2010.02.09 10:26

lol, kā parasti...

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic