Zur Boardunity Forenstartseite

Zurück   Boardunity & Video Forum » Technik » Web Design und Grafik

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1  
Alt 07.01.2004, 15:45
Mitglied
 
Registriert seit: 10.2003
Beiträge: 39

Parameter aus Adr.-Leiste auslesen? YaBB SE 1.5.4 (Recent.php YaBB SE 1.5.1)


Hi,

mein Anliegen sollte an sich ganz einfach sein:

Hab die Code Passage:
Code:
<?php

...

function RecentPosts()
{
	global $bla, $bla, $bla
	$display = 30;

...
}

...

?>
Der Wert 30 soll gegen das auslesen von:
--
?action=recent;display=30
--
aus der URL Adressleiste ersetzt werden. Dabei soll 20 als Standardwert genommen werden falls kein Parameter ausgelesen werden konnte.
Damit wird die Anzahl der anzuzeigenden Threads beeinflusst wird und es zur Zeit statisch ist wenn ich es aufrufe

Falls es wirklich nicht zu kompliziert ist, würde ich mich über Hilfe freuen, da nur PHP Basiskenntnisse.

Geändert von netzopfer (24.06.2008 um 21:02 Uhr).
  #2  
Alt 07.01.2004, 16:34
Mitglied
 
Registriert seit: 10.2003
Beiträge: 39

Hui....


hui..., dann sind es wohl doch eher niedere Basiskenntnisse
Ich lerne aber schnell, sehe ich diese Funktion irgendwo anders komm ich in der Regel immer schnell rein , doch der Anstoss fehlt mir in diesem Fall noch.


Ps: Code bis zur Ausgabe von HTML in der Funktion, evt. hilft es dir bzw. mir?
Code:
function RecentPosts()
{
	global $settings, $txt, $yytitle, $censored, $scripturl, $enable_ubbc, $enable_notification, $menusep, $db_prefix;
	global $cgi, $img, $color, $imagesdir, $realNames, $sc;
	$display = 30;

	// in order to optimize speed, this query gets the ($display * 4)
	// latest messageID's. guessing that that will be enough to cover
	// ($display) topics a user is allowed to see.
	$request = mysql_query("
		SELECT ID_MSG
		FROM {$db_prefix}messages AS m
		WHERE 1
		ORDER BY posterTime DESC
		LIMIT 0, " . ($display * 4)) or database_error(__FILE__, __LINE__);
	$messages = array();
	while ($row = mysql_fetch_array($request))
		$messages[] = $row['ID_MSG'];

	$yytitle = $txt[214];
	template_header();

	if (count($messages))
	{
		$request = mysql_query("
			SELECT m.smiliesEnabled, m.posterTime, m.ID_MSG, m.subject, m.body, m.ID_TOPIC, t.ID_BOARD, b.name AS bname, c.name AS cname, t.numReplies, m.ID_MEMBER, m2.ID_MEMBER AS ID_FIRST_MEMBER, m.posterName, m2.posterName AS firstPosterName, IFNULL(mem.realName, m.posterName) AS posterDisplayName, IFNULL(mem2.realName, m2.posterName) AS firstPosterDisplayName, b.name AS bName
			FROM {$db_prefix}messages AS m, {$db_prefix}messages AS m2, {$db_prefix}topics AS t, {$db_prefix}boards AS b, {$db_prefix}categories AS c
				LEFT JOIN {$db_prefix}members AS mem ON (mem.ID_MEMBER=m.ID_MEMBER)
				LEFT JOIN {$db_prefix}members AS mem2 ON (mem2.ID_MEMBER=m2.ID_MEMBER)
			WHERE m.ID_MSG IN (" . implode(',', $messages) . ")
				AND m2.ID_MSG=t.ID_FIRST_MSG
				AND t.ID_TOPIC=m.ID_TOPIC
				AND b.ID_BOARD=t.ID_BOARD
				AND c.ID_CAT=b.ID_CAT
			AND (FIND_IN_SET('$settings[7]', c.memberGroups) != 0 OR c.memberGroups='' OR '$settings[7]'='Administrator' OR '$settings[7]'='Global Moderator')
			ORDER BY m.posterTime DESC
			LIMIT 0, $display") or database_error(__FILE__, __LINE__);

echo '...

...


Geändert von netzopfer (24.06.2008 um 21:02 Uhr).
  #3  
Alt 07.01.2004, 16:43
Mitglied
 
Registriert seit: 10.2003
Ort: Bottrop
Beiträge: 779
$display = 30;

Wird zu:
$display = (isset($_REQUEST['display'])) ? (int)$_REQUEST['display'] : 30;
if($display <= 0) $display = 30;

Das sollte in etwa das bringen, was du willst... dadurch, dass der Input als Integer gecastet wird sollte es auch nicht allzu schlimm sein, wenn irgendein Heini meint ?display=string eingeben zu müssen.

__________________
Patrick Gotthardt
Patrick Gotthardt on Software
  #4  
Alt 07.01.2004, 16:46
hä?
 
Registriert seit: 03.2002
Beiträge: 33
du kannst auf den wert einfach mit $_GET['display'] zugreifen.
das wird aber nur funktionieren, wenn in der php konfiguration (php.ini) das semikolon als trennzeichen eingetragen ist. (arg_seperator oder so ähnlich heisst das da.)
zumindest wenn du das als modifikation veröffentlichen willst, solltest du dich darauf nicht verlassen. wenns nur für dich sein soll - kein problem.

  #5  
Alt 07.01.2004, 17:15
Mitglied
 
Registriert seit: 10.2003
Beiträge: 39
Zitat:
Zitat von TheDragonMaster
$display = 30;

Wird zu:
$display = (isset($_REQUEST['display'])) ? (int)$_REQUEST['display'] : 30;
if($display <= 0) $display = 30;

Das sollte in etwa das bringen, was du willst... dadurch, dass der Input als Integer gecastet wird sollte es auch nicht allzu schlimm sein, wenn irgendein Heini meint ?display=string eingeben zu müssen.

Hallo danke erstmal für deine/eure Hilfe:

hab das mal jetzt so:
--
// $display = 30;
$display = (isset($_REQUEST['display'])) ? (int)$_REQUEST['display'] : 20;
if($display <= 0) $display = 20;

eingefügt, kommt aber leider nicht zum gewünschten Ergebniss


Überzeugen bitte hier:
--
http://
--


Geändert von netzopfer (24.06.2008 um 21:03 Uhr).
  #6  
Alt 07.01.2004, 17:26
hä?
 
Registriert seit: 03.2002
Beiträge: 33
lies meinen letzten beitrag. du kannst ds semikolon nicht verwenden.

aber -> http://www.netzopfer.de/index.php?ac...cent&display=5 funktioniert natürlich.

  #7  
Alt 07.01.2004, 17:30
hä?
 
Registriert seit: 03.2002
Beiträge: 33
aber es funktioniert doch!?!

  #8  
Alt 07.01.2004, 17:41
Mitglied
 
Registriert seit: 10.2003
Beiträge: 39
Zitat:
Zitat von martin
aber es funktioniert doch!?!
An sich O.K. wollte die Funktion nur dafür nutzten, ist es so schwer das er das ; nutzen kann?


Geändert von netzopfer (24.06.2008 um 21:04 Uhr).
  #9  
Alt 07.01.2004, 18:08
Benutzerbild von Philipp Gérard
Zeitdenken
 
Registriert seit: 09.2003
Ort: Wien
Beiträge: 832
$_SERVER['QUERY_STRING'] exploden, displaywert rausfischen... einfach?

PHP-Code:
$array explode(";",$_SERVER['QUERY_STRING']); 

  #10  
Alt 07.01.2004, 18:17
Mitglied
 
Registriert seit: 10.2003
Ort: Bottrop
Beiträge: 779
@Phillip: Generell schon... nur wie willst du rausfinden, an welcher Stelle das liegt?

@ciruZ: Sorry, das hatte ich übersehen... sowas "dummes" hab ich aber auch noch nie gesehen...

In diesem Fall bräuchte man dann tatsächlich den entsprechenden Abschnitt aus der globalen Datei...

__________________
Patrick Gotthardt
Patrick Gotthardt on Software
  #11  
Alt 07.01.2004, 18:43
Benutzerbild von Philipp Gérard
Zeitdenken
 
Registriert seit: 09.2003
Ort: Wien
Beiträge: 832
regxps?

  #12  
Alt 07.01.2004, 19:06
Mitglied
 
Registriert seit: 10.2003
Ort: Bottrop
Beiträge: 779
Viel zu langsam für sowas.... wir bräuchten nur den entsprechenden Codeabschnitt und dann könnte man auf sowas verzichten.

__________________
Patrick Gotthardt
Patrick Gotthardt on Software
  #13  
Alt 07.01.2004, 19:12
Benutzerbild von Philipp Gérard
Zeitdenken
 
Registriert seit: 09.2003
Ort: Wien
Beiträge: 832
Klar gehts leichter mit dem Originalcode - aber wenn er ihn nunmal nicht findet?

*kopfschüttel*

  #14  
Alt 07.01.2004, 19:56
Mitglied
 
Registriert seit: 10.2003
Beiträge: 39

Danke....


He Jungs & Mädels,

ich bedank mich für euren Einsatz an der Unterstützung eines PHP-Dummies. Ich bin voll und ganz zufrieden und werde die Funktion auch mit dem & druchsetzen.

Danke...

Geändert von netzopfer (24.06.2008 um 21:04 Uhr).
  #15  
Alt 08.01.2004, 07:12
Mitglied
 
Registriert seit: 10.2003
Beiträge: 39
Nein


Ach ich weiss ja auch nicht

  #16  
Alt 13.01.2004, 17:34
Benutzerbild von Creator
Mitglied
 
Registriert seit: 11.2002
Ort: NRW / Düren
Beiträge: 110
Hier der Code abschnitt ausm YaBB SE 1.4 (glaub das war die version).

Hatte diese version noch irgend wo auf der platte und hab schnell nachgeschaut:
PHP-Code:
if(strlen($QUERY_STRING)>0)
{
    
$str = (substr($QUERY_STRING,0,5)=="url=/")?$HTTP_SERVER_VARS["REDIRECT_QUERY_STRING"]:$QUERY_STRING;
    
$query_strings split("[;&]",URLdecode($str));
    foreach (
$query_strings as $tmp)
    {
        if(
preg_match("/^([^=]+)[=](.*)/"$tmp$parts)) {
            
$GLOBALS[$parts[1]] = $parts[2];
        }
    }

Dem code nach zu urteilen wäre die variable die du suchst in: $GLOBALS['display'] zu finden.

Außerdem siehts aus als könnte man beides ; und & verwenden

  #17  
Alt 13.01.2004, 17:45
Benutzerbild von Creator
Mitglied
 
Registriert seit: 11.2002
Ort: NRW / Düren
Beiträge: 110
Zitat:
Zitat von ciruZ
Das $GLOBALS brauchst du nur innerhalb einer Funktion.
echo $GLOBALS['bla'] entspricht ca:
global $bla;
echo $bla;

Das er das so macht nenne ich fatal, da kann man auch gleich register_globals = On machen.
in den neueren versionen ist das sicherlich anders geregelt. hab aber wenig mit dem yabbse am Hut. Gibts ne neuere Version?! egal, aber da is das bestimmt alà $query_string_vars['display'] ?



P.S.:
Die datei hieß querystring.php

Antwort


Stichworte
-

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
Gehe zu






1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25