Urls im PHP Script umschreiben...

Wie wir alle wissen (sollten) ändert mod_rewrite keine Links im Script. Damit auch die Links auf Deiner Page auf die neuen "Rewrited URLs" zeigen bedarf es der Anpassung im Code. Fragen und Probleme rund um's Coding werden hier diskutiert.

Moderator: Super-Mod

Urls im PHP Script umschreiben...

Beitragvon shakur » 31.03.2005 22:19

Ich hab hier ein Php Script das verschiedeneLinks zu Foren Threads ausgibt und möchte die Ausgabe der urls von http://www.xxx.de/threads.php?f=2 in http://www.xxx.de/02.threads.html usw. umwandeln.

Das mit der htaccess Datei hab ich nun geschnallt, aber das anpassen in meinem php Script überfordert mich ein wenig...

Es währe echt super wenn mir einer der Profis da weiterhelfen könnte :)


Hier das Script:

<?php
include("./admin/config.php");
include("$include_path/common.php");
include("$include_path/$table_file");
include("$include_path/doc_head.php");
include("$include_path/styles.php");

global $HTTP_POST_VARS,$HTTP_GET_VARS,$HTTP_SESSION_VARS;

global $_SESSION;

if ($HTTP_POST_VARS!="")
$_POST=$HTTP_POST_VARS;

if ($HTTP_GET_VARS!="")
$_GET=$HTTP_GET_VARS;

if ($HTTP_SESSION_VARS!="")
$_SESSION=$HTTP_SESSION_VARS;



include("Ads_new.php");
include("$include_path/left.php");
include("$include_path/right.php");

$title = "Forums";

$forum_parent = isset($_GET['p']) ? $_GET['p'] : 0;

$title = "Forums" . get_forum_name(" :: ", $forum_parent);

$sql = "select * from $tb_forums where";

if($forum_parent) {
$forum_link = '<a class="bold" href="' . $base_url . '/forums.php">Forum</a>';
$sub_forum = get_forum_name(" >> ", $forum_parent);
$sql .= " forum_id = '$forum_parent'";
} else {
$sub_forum = "";
$forum_link = 'Forum';
$sql .= " forum_pid = '$forum_parent'";
}

$sql .= " order by order_by";

$query = mysql_query($sql) or die(mysql_error());


$tpl->assign(array('FORUM_LINK' => $forum_link,
'SUB_FORUM' => $sub_forum));


if(mysql_num_rows($query)){
while($array = mysql_fetch_array($query)){
$forum_info = '<a class="link01" href="' . $base_url . '/forums.php';
$forum_info .= $forum_parent ? "" : "?p=" . $array["forum_id"];
$forum_info .= '">' . $array['forum'] . '</a><br><span class="smallregular">' . $array['description'] . '</span>';
$tpl->assign(array('FORUM_INFO' => $forum_info));
$tpl->parse('ROWS_FORUMS', '.row_forums_title');

$ssql = "select * from $tb_forums where forum_pid = '$array[forum_id]' order by order_by";

$squery = mysql_query($ssql) or die(mysql_error());

if(mysql_num_rows($squery)) {

while($sarray = mysql_fetch_array($squery)) {

$posts = get_posts_count($sarray['forum_id']);
$threads = get_threads_count($sarray['forum_id']);
$last_post = get_last_post($sarray['forum_id']);
if($sarray[forum_lock] == "n") {
$img_src="<img src=\"images/unlock.gif\" border=\"0\" alt=\"Unlocked\"/>";
} else {
$img_src="<img src=\"images/lock.gif\" border=\"0\" alt=\"Locked\"/>";
}

$tpl->assign(array('IMG_SRC' => $img_src,
'FORUM_ID' => $sarray['forum_id'],
'FORUM' => $sarray['forum'],
'DESCRIPTION' => $sarray['description'],
'POSTS' => $posts,
'THREADS' => $threads,
'LAST_POST' => $last_post));
$tpl->parse('ROWS_FORUMS', '.row_forum');
}
}
}
}

//if(!isset($_GET['print'])) {
$tpl->parse('FORUMS_CONTENT', 'forums_content');
$content = $tpl->fetch('FORUMS_CONTENT');
//} else {
//$tpl->parse('FORUMS_CONTENT', 'forums_print');
//$content = $tpl->fetch('FORUMS_CONTENT');
//}
$final_output = table_s('<a class="link01" href="' . $base_url . '/">' . $site_title . '</a> >> '.$forum_link.$sub_forum, $content);

$tpl->assign(array('CONTENT_TEXT' => $final_output));
$tpl->parse('PAGE', 'main');
$final_output = $tpl->fetch('PAGE');

$final_output = final_output($final_output);

//echo $final_output;
?>

Danke im vorraus ;)
shakur
.
.
 
Beiträge: 5
Registriert: 31.03.2005 22:13

Beitragvon Bob » 31.03.2005 23:12

Suche in allen Dateien aunfach nach
Code: Alles auswählen
<a
und ändere z.B.
'<a class="link01" href="' . $base_url . '/forums.php';
in
'<a class="link01" href="' . $base_url . '/forums.html';
um.

Von /threads.php kann ich hier jetzt nichts finden, dass muss sich in einer der Dateien befinden, die über include() eingebunden werden. Was ist das denn für ein Script?
Bob
Moderator
Moderator
 
Beiträge: 5050
Registriert: 01.10.2004 13:10

danke erstmal

Beitragvon shakur » 01.04.2005 08:38

ich hab dir die url auf der das script läufft per pm geschickt.

vielen dank für das schnelle feedback ;)
shakur
.
.
 
Beiträge: 5
Registriert: 31.03.2005 22:13

Beitragvon Bob » 10.04.2005 13:35

ich hab dir die url auf der das script läufft per pm geschickt.
Das bringt mir leider wenig, da ich keine Infos zur Herkunft und damit den Quelltext des Scripts finde...
Bob
Moderator
Moderator
 
Beiträge: 5050
Registriert: 01.10.2004 13:10

Beitragvon shakur » 13.04.2005 22:44

ich hab nun folgendes problem:

$final_output = table_s('<a class="link01" href="' . $base_url . '/">' . $site_title . '</a> >> '.$forum_link.$sub_forum, $content);

gibt aus:

http://www.domain.de/forums.html?p=1

wie man anhand der url sehen kann hab ich die $base_url umgeschrieben.

der link sollte aber so ausschauen:

http://www.domain.de/forums-p-1.html

ist das überhaupt realisierbar?
shakur
.
.
 
Beiträge: 5
Registriert: 31.03.2005 22:13

Beitragvon shakur » 14.04.2005 21:04

Ich hab aus:

http://www.domain.de/forums.html?p=1

nun

http://www.domain.de/p1.html

gemacht.

Dazu habe ich ein script geschrieben das ich über include integriert habe:

<?

function replace_for_mod_rewrite(&$s) {
$s = preg_replace("'forums.php\?([a-z]+)=([0-9]+)'", "\\1\\2.html", $s);

return $s;
}

ob_start("replace_for_mod_rewrite");
?>

Jetzt versuche ich eine längere URL auf die selbe Art umzuwandeln und weis nicht so recht wie ich den code anpassen soll.

http://www.domain.de/thread.php?15&csr=10&cpp=10&ccp=2

wie mach ich das am besten?
shakur
.
.
 
Beiträge: 5
Registriert: 31.03.2005 22:13

Beitragvon Bob » 15.04.2005 10:53

Bob
Moderator
Moderator
 
Beiträge: 5050
Registriert: 01.10.2004 13:10

Beitragvon shakur » 15.04.2005 11:04

ist das so korrekt?

#############################
ob_start();
/** URL Array von einlesen **/
function replace_for_mod_rewrite(&$s) {
$urlin = array(
"'(?<!/)thread.php\?([0-9]*)&csr=([0-9]*)&cpp=([0-9]*)'",
);
/** URL Array ausgeben **/
$urlout = array(
"thread-\\1.html",
);
$s = preg_replace($urlin, $urlout, $s);
return $s;
}
#############################
shakur
.
.
 
Beiträge: 5
Registriert: 31.03.2005 22:13

Beitragvon Bob » 15.04.2005 11:28

ich sehe jetzt auf den ersten Blick keine Fehler, einfach testen...
Bob
Moderator
Moderator
 
Beiträge: 5050
Registriert: 01.10.2004 13:10


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste