Webstatt.org - Community seit 2006 - 2012 (2024?)

permalink erstellen

user-193
26.04.2008 11:30

hallo.

ich möchte gerne einen kategorietitel in einen permalink umwandeln. dazu habe ich schon einiges gemacht. jedoch, funktioniert die konvertierung noch nicht.

Auf was muss ich noch aufpassen?


<?php
$konvert = $_POST[branche];
function SEO_link($konvert)
{
$data = strtolower($konvert);
$searchsigns = array(' ', '?', '!', ':', 'ö', 'ä', 'ü', '&', '+', '-'zwinkern;
$replaces = array('-', '', '', '', 'oe', 'ae', 'ue', '', '', ''zwinkern;
$data = str_replace($searchsigns, $replaces, $data);
return $data;
$permalink = $data;
}
?>
<html><head>
<?php echo $permalink; ?>
<title>Neue Branche hinzuf&uuml;gen</title>
<link href="../styles.css" type="text/css" rel="stylesheet">
</head><body>
<?php
include('../connect.php'zwinkern;
//L&#65533;schen des Datensatzes
if($_GET[sent]==1 AND $_GET[id])
{
$sql = "DELETE ";
$sql.=" FROM branchen";
$sql.=" WHERE id=";
$sql.=$_GET[id];
@mysql_query($sql, $link);
}
if($_POST[sent])
{
{
$sql="INSERT INTO branchen (branche) values ('".$_POST[branche]."'zwinkern";
if(!mysql_query($sql, $link))
{$fehler.="<br>Der Eintrag ist aufgrund eines Datenbank Fehlers gescheitert! Bitte versuchen Sie es sp&auml;ter noch einmal, oder Verst&auml;ndigen Sie den Admin!<br>";}
}
if($fehler){ echo "<h2><font color=\"red\">".$fehler."</font></h2>";}
else
{
echo "<h2><font color=\"blue\">Der Eintrag war erfolgreich</font></h2><p><a href=\"neue_firma.php\">Zur&uuml;ck</a></p>";
unset($_POST[branche]);
}
}//Ende $_POST[sent]
?>
<form action="<? echo $PHP_SELF; ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="sent" value="1">
<table width="440" border="0" cellspacing="2" cellpadding="2">
<tr>
<td colspan="2"><h2>Neue Branche hinzuf&uuml;gen!</h2></td>
</tr>
<tr>
<td valign="top"><p>branche:</p></td>
<td valign="top"><label>
<input name="branche" type="text" size="40" value="<? echo $_POST[branche] ; ?>" />
</label></td>
</tr>
<td colspan="2" valign="top"><div align="center">
<label>
<input type="submit" name="Submit" value=" Eintragen " />
</label>
<label>
<input type="reset" name="Submit2" value="Reset" />
</label>
</div></td>
</tr>
</table>
<br />
</form>
<p>
<?php
//Ausgeben der Liste
$sql = "SELECT * FROM branchen ORDER BY branche ASC";
$result=@mysql_query($sql, $link);
if(mysql_num_rows($result)>0)
{
for($i=0;$i<mysql_num_rows($result);$i++)
{
echo mysql_result($result,$i, 'branche'zwinkern;
echo ' - <a href="'.$PHP_SELF.'?sent=1&id=';
echo mysql_result($result,$i, 'id'zwinkern;
echo '">L&ouml;schen</a><br>';
}
}
else
{
echo "<p>Noch keine Kommentare vorhanden!</p>";
}
?>
</p>
<p><a href="neue_firma.php">Zur&uuml;ck</a></p>
</body></html>

ich bin ein NOOB in PHP!!! aber seit 12.11.2006 ist meine Homepage unter http://www.hochitom.at zu erreichen!
user-303
26.04.2008 14:35

Hallo,

Leider hab ich nicht ganz verstanden, was du willst, aber hier ein paar allgemeine Tipps:

$konvert = $_POST[branche];

vermutlich willst du auf den index "branche" zugriefen. So ist das aber nicht richtig, php ist nur kullant genug, es dennoch durchgehen zu lassen. Richt wäre:
$konvert = $_POST['branche'];

----
    return $data;
$permalink = $data;

die Zeile hinter "return" wird niemals ausgeführt

----
<?php echo $permalink; ?>

Die Variable $permalink gibts nicht, weil:
- Sie innerhalb einer Funktion definiert werden soll. Funktionen haben einen eigenen Namensraum, was heißt, dass Variablen die dort drin erstellt werden auch wirklich nur von dort lesbar sind!
- Die Zuweisung der Variable steht sowieso hinterm return...

Vermutlich sollte sie irgendwo definiert werden, sonst hätte man hier ne nette cross-site-scripting möglichkeit

----
if($_GET[sent]==1 AND $_GET[id])

Das selbe wie im 1. Tipp. Dieser Fehler wiederholt sich öfters...

----
if(!mysql_query($sql, $link))
{$fehler.="<br>Der Eintrag ist aufgrund eines Datenbank Fehlers gescheitert! Bitte versuchen Sie es sp&auml;ter noch einmal, oder Verst&auml;ndigen Sie den Admin!<br>";}
}
if($fehler){ echo "<h2><font color=\"red\">".$fehler."</font></h2>";}

ACHTUNG! Du erlaubst damit cross-site-scripting!
Verwende NIEMALS nicht intialisierte Variablen!
Besser (nicht unbedingt schön, aber sicherer!) wäre:
$fehler='';
if(!mysql_query($sql, $link))
{$fehler.="<br>Der Eintrag ist aufgrund eines Datenbank Fehlers gescheitert! Bitte versuchen Sie es sp&auml;ter noch einmal, oder Verst&auml;ndigen Sie den Admin!<br>";}
}
if($fehler){ echo "<h2><font color=\"red\">".$fehler."</font></h2>";}

user-193
26.04.2008 16:00

ok, ich habe diese sachen jetzt ausgebessert.

muss ich diese funktion jetzt aufrufen, oder wird diese automatisch ausgeführt?

ich bin ein NOOB in PHP!!! aber seit 12.11.2006 ist meine Homepage unter http://www.hochitom.at zu erreichen!