webForumDet fria alternativet

länk fel

PHPur PHP

8 svar · 465 visningar · startad av mr.mainline

mr.mainlineMedlem sedan feb. 2003777 inlägg
#1

Vad är fel på denna rad,det är en gästbok,och när användarna lägger till sin webside adress och kommer den med i inlägget som en länk,men när man klickar på länken så kommer den upp i samma frame som gästboken ligger i,jag vill ha det _blank(en ny sida)

function _link($str) {
$str = preg_replace("/(?<!\[img\])(https?:\/\/|ftp:\/\/)([^<>\s\"\']+\.[^<>\s\"\']+)/i", "<a href=\"\\0\" target=\"_blank\">\\2</a>", $str);

return $str;
}
SnakesMedlem sedan okt. 2004392 inlägg
#2

Testa med det här

function _link($text) {
    $text = preg_replace( '/(?<![img])(http:\\/\\/|ftp:\\/\\/|https:\\/\\/|mailto:|www.)[\\w]+(.[\\w]+)([\\w\\-\\.\\,\\@\\?\\^\\=\\%\\&\\:\\/\\~\\+\\#]*[\\w\\-\\@\\?\\^\\=\\%\\&\\/\\~\\+\\#])?/i', "<a href=\\"$0\\" title=\\"$0\\" target='_blank'>$0</a>", $text );
    $text = str_replace("href=\\"www.","href=\\"http://www.",$text);
    return $text;
}

Bara och kopiera

mr.mainlineMedlem sedan feb. 2003777 inlägg
#3

nix samma fel,andra förslag?

SnakesMedlem sedan okt. 2004392 inlägg
#4

Enligt dessa båda så ska det öppna nytt fönster..... det är inte fel på dem.... jag testa och det öppna på ett nytt fönster.....
Vart jag vill komma? Jo, det är fel på din sida... skriv sidans adress i adress fältet och visa källa, spara filen som .txt och ladda upp någonstans och ge mig adressen (webforum har en uppladnings funktion :e)

mr.mainlineMedlem sedan feb. 2003777 inlägg
#5

det funkade inte att ladda upp filen här ,men adressen är http://www.ridgebowshankook.com/ och här är länken till själva gästboken http://www.ridgebowshankook.com/gastbok/guestbook.php

SnakesMedlem sedan okt. 2004392 inlägg
#6

jaha.... så du vill att deras hemsida ska länkas i nytt fönster?

Men, det behöver ju ingen replace sätt bara en target="_blank"
framför hemsida adressen!

Infoga gärna scriptet!

mr.mainlineMedlem sedan feb. 2003777 inlägg
#7
<?
session_start();

include 'config.php';

if ($use_conn == 1) {
	include $conn;
} else {
	$link = mysql_connect($dbhost, $dbuser, $dbpass);
	mysql_select_db($dbdatabas, $link);
}

include 'funktioner.php';
include 'admin.php';

if ( isset( $_POST['text'] ) ) {

$namn = $_POST['namn'];
$email = $_POST['email'];
$hemsida = $_POST['hemsida'];
$tid = time();
$text = $_POST['text'];
$ip = getenv('REMOTE_ADDR');

	if (in_array($ip, $blocked_ip)) {
		die('Din ip är särrad!');
	}

$text = str_replace("'",'',$text);

addslashes($namn);
addslashes($email);
addslashes($hemsida);
addslashes($text);

$sql = "INSERT INTO guestbook(namn, email, hemsida, tid, text, ip) VALUES('{$namn}', '{$email}', '{$hemsida}', $tid, '{$text}', '{$ip}')";

mysql_query($sql);

}

ini_set('arg_separator.output', '&amp;');

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE> Gästbok </TITLE>
<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
<!--
function valid() {
if ((document.nytt.hemsida.value == "") || (document.nytt.hemsida.value == "http://")) {
document.nytt.hemsida.value = "nosite";
}
<? if ($need_email == 0) { ?>
if (document.nytt.email.value == "") {
document.nytt.email.value = "nomail";
}
<? } ?>

if (document.nytt.namn.value == "") {
alert('Du måste skriva ditt namn!');
return false;
}

<? if ($need_email == 1) { ?>
else if (document.nytt.email.value == "") {
alert('Du måste skriva en giltig e-mail adress!');
return false;
} 
<? } ?>

else if (document.nytt.text.value == "") {
alert('Du måste skriva ett meddelande!');
return false;
} else {
return true;
}
}
//-->
</SCRIPT>
<LINK rel="stylesheet" type="text/css" href="layout.css">
</HEAD>
<BODY>

<!-- Här börjar HTML-sidan. Här kan du lägga t.ex. en meny eller liknande. -->

<BR><DIV class="rubrik">
  <div align="left">S&auml;tt g&auml;rna ett avtryck i Quinns gästbok</div>
</DIV>
<FORM METHOD=POST name="nytt" onSubmit="return valid();" action="guestbook.php">
<TABLE style="font-size:12px;"><TR>
<TD>Namn:</TD>
<TD><INPUT TYPE="text" NAME="namn" maxLength="30"></TD>
</TR><TR>
<TD>E-mail:</TD>
<TD><INPUT TYPE="text" NAME="email" maxLength="50"></TD>
</TR><TR>
<TD>Hemsida:</TD>
<TD><INPUT TYPE="text" NAME="hemsida" maxLength="255" value="http://"></TD>
</TR>
</TABLE>
<TEXTAREA NAME="text" ROWS="6" COLS="40"></TEXTAREA><BR>
<INPUT TYPE="submit" value="Skicka!">
</FORM>
<DIV class="rubrik">
  <div align="left"></div>
</DIV><BR>
<?
if ($max_inlagg == 0) {
$sql = "SELECT * FROM guestbook ORDER BY id DESC";
} else {
$sql = "SELECT * FROM guestbook ORDER BY id DESC LIMIT $max_inlagg";
}
$res = mysql_query($sql);

while($ar = mysql_fetch_array($res)) {

$namn = $ar['namn'];
$email = $ar['email'];
$hemsida = $ar['hemsida'];
$tid = $ar['tid'];
$text = $ar['text'];
$ip = $ar['ip'];
$id = $ar['id'];

$tid = date("Y-m-d H:i", $tid);

$namn = stripslashes($namn);
$email = stripslashes($email);
$hemsida = stripslashes($hemsida);
$text = stripslashes($text);

$text = htmlentities($text);
$text = nl2br($text);

	if ($bui_tags == 1) {
		$text = _bui($text);
	}
	if ($cs_tags == 1) {
		$text = _cs($text);
	}
	if ($qoute_tag == 1) {
		$text = _qoute($text);
	}
	if ($smileies == 1) {
		$text = _smileies($text);
	}
	if ($links == 1) {
		$text = _link($text);
	}
	if ($img == 1) {
		$text = _img($text);
	}

echo '<DIV class="tid">';

	if ($email == 'nomail' || $email == 'nosite') {
		echo $namn;
	} else {
		echo '<A href="mailto:'.$email.'">'.$namn.'</A>';
	}
	if ($hemsida == 'nosite' || $hemsida == 'nomail') {
		echo ' - ';
	} else {
		echo ' - <A href="'.$hemsida.'">'.$hemsida.'</A> - ';
	}

echo $tid.'</DIV><DIV class="text">'.$text.'</DIV>';

	if ($_SESSION['admin på gästboken.'] == 'mm, stämmer') {
		echo 'Admin: Detta skrevs av ip: '.$ip.'. <A href="guestbook.php?mode=delete&amp;id='.$id.'">Radera inlägget</A>. <A href="guestbook.php?mode=edit&amp;id='.$id.'">Redigera inlägget</A>.<BR>';
	}

echo '<BR><BR>';

}
?>

<!-- Här kan du lägga till info som t.ex. regler osv. -->

</BODY>
</HTML>

sen funktions filen:
<?
function _bui($str) {
	while (substr_count($str, '[b]') > substr_count($str, '[/b]')) {
		$str .= '[/b]';
	} while (substr_count($str, '[u]') > substr_count($str, '[/u]')) {
		$str .= '[/u]';
	} while (substr_count($str, '[i]') > substr_count($str, '[/i]')) {
		$str .= '[/i]';
	}

$ett = array('[b]','[/b]','[u]','[/u]','[i]','[/i]');
$tva = array('<B>','</b>','<u>','</u>','<i>','</i>');
$str = str_replace($ett, $tva, $str);

return $str;
}

function _cs($str) {
	while (substr_count($str, '[color') > substr_count($str, '[/color]')) {
		$str .= '[/color]';
	} while (substr_count($str, '[size') > substr_count($str, '[/size]')) {
		$str .= '[/size]';
	}

$str = preg_replace("/\[color\=#?([abcdefABCDEF0-9]+)\]/","<span style=\"color:#$1\">",$str);
$str = preg_replace("/\[size\=(\d{2})\]/","<span style=\"font-size:$1px\">",$str); 

$str = str_replace('[/color]', '</span>', $str);
$str = str_replace('[/size]', '</span>', $str);

return $str;
}

function _qoute($str) {
	while (substr_count($str, '[qoute') > substr_count($str, '[/qoute]')) {
		$str .= '[/qoute]';
	}

$str = preg_replace('/\[quote=&quot;(.*)&quot;\](.*?)\[\/quote\]/i', '<blockquote><b>\\1 skrev:</b><br>\\2</blockquote>', $str);
$str = preg_replace('/\[quote="(.*)"\](.*?)\[\/quote\]/i', '<blockquote><b>\\1 skrev:</b><br>\\2</blockquote>', $str);

$str = str_replace('[quote]', '<blockquote><b>Citat:</b><br>', $str);
$str = str_replace('[/quote]', '</blockquote>', $str);

return $str;
}

function _link($text) {
    $text = preg_replace( '/(?<![img])(http:\/\/|ftp:\/\/|https:\/\/|mailto:|[url]www.[/url])[\w]+(.[\w]+)([\w\-\.\,\@\?\^\=\%\&\:\/\~\+\#]*[\w\-\@\?\^\=\%\&\/\~\+\#])?/i', "<a href=\"$0\" title=\"$0\" target='_blank'>$0</a>", $text );
    $text = str_replace("href=\"www.","href=\"http://www.",$text);
    return $text;
}

function _img($str) {
$str = preg_replace("/\[img\](.*)\[\/img\]/i", '<img src="\\1" alt="" />', $str);

return $str;
}

include 'smileys.php';

?>
PeeerMedlem sedan mars 20025 907 inlägg
#8

Vad är det du vill göra egentligen? Länka webb-adresser som besökarna skrivit i själva gästboksinlägget, eller se till att adresserna som skrivs in i "hemsida"-fältet öppnas i ett nytt fönster?

Är det alternativ nummer 2 som gäller, så är din kod rätt onödig. Det räcker med att ändra nedstående kodrad

'Ändra den här raden:
echo ' - <A href="'.$hemsida.'">'.$hemsida.'</A> - ';
'till det här istället
echo ' - <A href="'.$hemsida.'" target="_blank">'.$hemsida.'</A> - ';
mr.mainlineMedlem sedan feb. 2003777 inlägg
#9

Så nu funkar det som det ska,tack så mycket.

127 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)