PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Allgemeiner Fragethread



Seiten : [1] 2

Antares
17.01.2007, 00:29
So, ich dachte mir, da viele der neu geöffneten Themen relativ schnell beantwortet und damit abgeschlossen sind, eröffne ich einen allgemeinen Fragethread, um das Forum besser strukturieren zu können.

Fragen rund um die Themen des Webdevs, die recht schnell beantwortet sein sollten, können absofort hier gestellt werden.

Falls der Thread die gewünschte Resonanz erzielen sollte, so würde ich einen Moderator bitten, den Thread zu pinnen.

Satyras
17.01.2007, 17:49
Gut dann fang ich mal an!
Wie bindet man Flash in die Seite ein?

Drakes
17.01.2007, 18:11
<object
type="application/x-shockwave-flash"
data="path"
width="Breite" height="Höhe"
>
<param name="movie" value="path />
<param name="quality" value="high" />
<param name="bgcolor" value="#FFFFFF" />
<p>Alternativtext wenn es nicht angezeigt werden kann.</p>
</object>

So ;)
Ich hätte dir diese Seite (http://jendryschik.de/wsdev/einfuehrung/) empfohlen. Wenn du Flash bei der Suche eingegeben hättest, hättest du es sofort gefunden.

FF
17.01.2007, 19:13
um den thread maal zu nutzen, und weil ich zu faul bin die suchen funktion zu benutzen, oder google zu bemühen, frage ich einfach mal, wie ich bei php:

1. ungefähr alles escape was man so escapen kann. ich hab einiges bereits, aber ich denk mal, das ist immer noch recht unsicher.

2. wie ich es hinbekomme, das man beim aktualisieren der seite oder erneutem klicken auf nen submit butten alles nochmal submittet

3. wie ich so ne bildabfrage mit verzerrten buchstaben mache, gegen bots.

geht um das hier:
http://freierfall.fr.funpic.de/gb.php
bzw http://freierfall.fr.funpic.de/gb.phpa (source)
das ich mal vor jahren gemacht hab, ursprünglich als GB, aber ich will das mehr so als pastebin nutzen.

ach ja, da war doch noch was xD
4. wie veranlasse ich php mir was synthaxgehighlightet darzustellen? dazu gibts doch sicher super bibliotheken? *manni anguck*

Blakkeight
17.01.2007, 20:39
Zu Drittens: http://www.selfphp.de/kochbuch/kochbuch.php?code=22

Die Ganze sache nennt sich Captcha. ;)

e:
http://www.devmag.net/tricks/php/php_trick_14.htm
Das koennte dir vlt bei Viertens Helfen.

Demonking
17.01.2007, 20:44
zu 1. Könntest ja ncoh addslashs() ^^"
2. verstehe ich net ganz :o was sollte das bringen? XD

FF
17.01.2007, 20:47
im moment wird bei nem aktualisieren der seite alles erneut in die dateie geschrieben, das will ich verhindern^^, deswegen 2

wegen dem syntaxhighlighting, ne, das passt ned, weil das 1) nur auf php anwendbar wäre, und 2) ich keinen zugriff auf die php ini hab.

Blakkeight
17.01.2007, 20:55
Dann vlt das hier -> http://scott.yang.id.au/2003/01/source-code-syntax-highlighting-in-php/

mitaki
17.01.2007, 21:30
Hm, hätte mir denken können, dass diese Geschichte recht unübersichtlich wird.


1. ungefähr alles escape was man so escapen kann. ich hab einiges bereits, aber ich denk mal, das ist immer noch recht unsicher.
addslashes() escaped alles, was für PHP unsicher ist. mysql_real_escape_string() escaped alles was für MySQL-Queries gefährlich wäre.

htmlentities() und ähnliche maskieren je nach Parameter die 5 wichtigen Zeichen in (X)HTML: < (&lt;), > (&gt;), & (&amp;), " (&quot;) und ' (' oder &#x27;).


2. wie ich es hinbekomme, das man beim aktualisieren der seite oder erneutem klicken auf nen submit butten alles nochmal submittet
Du speicherst die Dateien irgendwo temporär ab, z.B. Textdatei oder in einer Datenbank.
Für das Folgeskript muss du natürlich deutlich machen, dass genau diese gespeicherten Daten wichtig sind.
Wenn du nur kleine Daten weitergeben möchtest wären eventuell versteckte Eingabefelder nützlich.

<input type="hidden" />


Dann vlt das hier -> http://scott.yang.id.au/2003/01/sour...ghting-in-php/
Man sollte wohl sagen, dass die beiden Funktionen ab PHP5 sofort Strict-konformen Code ausgeben.

Für HTML, CSS und andere werden fertige Funktionen nicht so einfach zu finden sein. Vor allem keine fehlerfreien, das haben bisher nichtmal die guten Boardsoftwares geschafft.
Eventuell schaust du in den diversen Freewareboards, ob du was abkupfern kannst^^

Merovinger
20.01.2007, 19:09
if($datei_type!="image/gif" or $datei_type!="image/jpeg"){
$fehler.='<li>Die ausgew&auml;hlte Datei ist keine Bilddatei, sondern eine '.$datei_type.' Datei</li><br><a href="admin-gallery.php">zur&uuml;ck</a>';
echo $fehler;
}
könnte mir hier jemand sagen was ich für ein fehler eingebaut hab, ich seh ihn einfach net>:( ,denn es ist egal ob in der if schleife true oder false rauskommt es wird immer $fehler angezeigt -.- (hab ich so rausbekomm, indem ich die bedingung umgedreht habe)
kann sein, dass es daran liegt, dass ich schon eifach zu lange vorm kasten bin(das ich den fehler nicht seh mein ich damit)

mitaki
20.01.2007, 19:20
AND statt OR verwenden, sonst ergibt der Ausdruck immer true.


if($datei_type!='image/gif' AND $datei_type!='image/jpeg') {
$fehler.='<li>Die ausgew&auml;hlte Datei ist keine Bilddatei, sondern eine '.$datei_type.' Datei</li><br><a href="admin-gallery.php">zur&uuml;ck</a>';
echo $fehler;
}

Außerdem: Text wie diese MIME-Typen kannst du in einfache Anführungszeichen setzen, da der Text von PHP nicht verarbeitet werden muss (z.B. weil eine Variable enthalten wäre). Damit sparst du Performance (gut, keine signifikante, aber immerhin).

Nebenbei: Schriftzeichen wie die Umlaute oder das Scharfe S sollten nicht maskiert werden, diese Zeichen sind meist ohnehin in der verwendeten Zeichenkodierung enthalten (PHP verarbeitet Texte außerdem eh als ISO-8859-1). Maskiert werden sollten nur die fünf HTML-relevanten Zeichen <, >, &, " und '.

Merovinger
21.01.2007, 13:14
ah supper dankehttp://www.multimediaxis.de/images/smilies/old/sm_12.gif

underdark
21.01.2007, 15:59
http://underdark.uttx.net/my_page/newindex.html
Hat irgendwer eine Idee, wie ich die flasche Anzeige im IE zurecht biegen kann?

mitaki
21.01.2007, 21:10
Hat irgendwer eine Idee, wie ich die flasche Anzeige im IE zurecht biegen kann?
Die Frage ist eindeutig zu allgemein ^_^

Was genau siehst du als Fehler an, welche IE Version verwendest du? Mit IE7 konnte ich keine Fehler entdecken.
IE6 zeigt weder Konkurenz noch den Header richtig an, das?

Eventuell hat es damit zu tun, dass IE6 für body noch keine andere Breite als Viewportbreite kennt.
Das Problem scheint dann die Opera-Werbung zu sein, die - weil falsch positioniert - den Header verdrängt.

Du könntest es IE6-spezifisch mit position:relative; und right: oder margin-right -xEinheit; versuchen.

Oder du lässt die Werbung weg, so offensichtlich ist sie eher störend, vor allem weil sie sich immer im Sichbereich befindet.

underdark
21.01.2007, 21:52
Sorry, war wirklich zu allgemein.
Den IE6 ignorier ich ehrlich gesagt, aber der IE7 zeigt folgendes:
http://i79.imagethrust.com/t/771036/clipboard01.jpg (http://i79.imagethrust.com/images/3eA4/view-image/clipboard-01.html)
Habs hier markiert.
1. Fehlt das padding in den Boxheadern und
2. überlappt der Boxheader in der rechten Spalte den Rand

Wie würde ich die Werbung richtig positionieren. Ich habe sie gern an prominenter Stelle auch wenns manche vielleicht als störend empfinden ;)

mitaki
21.01.2007, 22:26
Den IE6 ignorier ich ehrlich gesagt
Braves Mädel ;)


1. Fehlt das padding in den Boxheadern und
Den IE stört das negative margin oben in div.box_head. Wenn du für den IE das margin in div.box_head von rundherum -10px auf 0 -10px -10px umänderst (d.h. oben 0, links, rechts und unten aber weiterhin -10px margin) löst sich das Problem.

Möglicherweise löst das auch das Problem #2, was ich aber nicht sagen kann, weil ich nur die HTML und CSS Quelltexte schnell zum testen gespeichert habe.


Wie würde ich die Werbung richtig positionieren. Ich habe sie gern an prominenter Stelle auch wenns manche vielleicht als störend empfinden ;)
Nun gut, ich will dir nicht das recht strittig machen die Werbung dort zu platzieren wo du denkst, dass die angebracht ist (rechts beim scrollbalken ist ohnehin eine gute Zone, die viele nutzen). Die, welche sich wirklich daran stören entfernen sie sowieso lautlos.

Antares
24.01.2007, 22:37
Sinf ImageMaps eigentlich noch valide?
IM IE7 werden sie scheinbar ignoriert.

mitaki
24.01.2007, 22:48
Dazu kommt deine Frage zu spät, denn das wäre bei der rasanten Verbreitung der Version 7 schon viel früher aufgefallen.

Hast du ein Beispiel, welches nicht funktioniert?

Antares
24.01.2007, 22:50
<map name="footer">
<area shape="rect" coords="11,216,82,279" href="#">
</map>




<img src="#" usemap="footer" />


Das sollte normalerweise funktionieren.
Aber nicht im IE7.

mitaki
24.01.2007, 22:53
<img src="#" usemap="footer" />
usemap erwartet eine ID-Referenz als Wert, d.h. vor dem Namen muss ein Gatterzeichen (#) stehen.
Hm, wo ist denn das (Pflicht-)Attribut „alt“?

Antares
24.01.2007, 23:40
<img src="#" usemap="footer" />
usemap erwartet eine ID-Referenz als Wert, d.h. vor dem Namen muss ein Gatterzeichen (#) stehen.
Hm, wo ist denn das (Pflicht-)Attribut „alt“?

Ohja, blöder Fehler von mir.
Alt hab ich mal weggelassen, ist ja fürs Beispiel nicht notwendig.

mitaki
24.01.2007, 23:59
Alt hab ich mal weggelassen, ist ja fürs Beispiel nicht notwendig.
Darüber kann man sehr lange streiten^^
Ich bin eben der Meinung, wenn schon, denn schon. Vor allem da du die XHTML-Schreibweise gewählt hast.

Aber gut, belassen wir das. Hier geht es ja schließlich auch um die Hilfe, di im Vordergrund stehen sollte. ;)

Antares
25.01.2007, 15:17
Hab noch so ein seltsames Problem...





<form action='news_eintrag.php' method='post'>
<br>


<div style='margin-bottom: 10px;'>
<b style='color: white;'>Titel:</b><br />
<input type='text' name='titel' style='border: 1px solid #666666; background: #EEEEEE;' />
</div>




<b style='color: white;'>Text:</b><br />
<textarea cols='40' rows='10' name='message' style='border: 1px solid #666666; background: #EEEEEE;'></textarea>
<br /><br /><input type='submit' value='Absenden' style='border: 1px solid #666666; background: #EEEEEE;'>
</form>







<?php

$verbindung = mysql_connect ("localhost",
"...", "...")
or die ("keine Verbindung möglich.
Benutzername oder Passwort sind falsch");

mysql_select_db("...")
or die ("Die Datenbank existiert nicht.");


$message = $_POST["message"];
$username = $_POST["autor"];
$titel = $_POST["titel"];
$zeit = time();





$eintrag = "INSERT INTO news
(message, username, titel, zeit)
VALUES
('$message', '$username', '$titel', '$zeit')";

$eintragen = mysql_query($eintrag);

if($eintragen == true)
{
echo "<div align=\"center\" style='color: white; '><br /><br />Eintrag war erfolgreich. <br /> <br/> <a style='color: white; ' href=\"index.php\">Weiter »</a></div>";
}
else
{
echo "Fehler beim Speichern";
}



?>



Wie man sieht handelt es sich um ein einfaches Newsscript.
Doch seltsamerweise werden immer 2 Einträge gemacht?
Woran hängt das?
Wobei ich dazu sagen muss, dass es auf einem anderen Server funktioniert.
Ich dachte schon an Unterschiedliche PHP Versionen - gibt es da einen Befehl, der bei einer anderen Version anders aussehen müsste?

mitaki
25.01.2007, 15:40
Ich sehe nichts, dass eine doppelte Eintragung verursachen könnte.

Tritt dieses Problem in mehreren oder nur einem bestimmten Browser auf?
Falls letzteres zutrifft, versuche doch mal einen <button type="submit"> statt <input /> zu verwenden.

Oder aktualisierst du die Seite mit dem Eintrageskript eventuell, so dass es erneut aufgerufen wird?

So, muss jetzt leider wieder arbeiten gehen ;_;

Lukas
25.01.2007, 15:41
Bist du sicher, dass das Codestueck nicht mehrfach aufgerufen wird? Und bist du auch sicher, dass die Eintraege mehrfach in der DB stehen und nicht einfach nur doppelt ausgegeben werden?
Ansonsten wuerde ich den Code uebrigens auch noch gegen SQL-Injections schuetzen.

Antares
25.01.2007, 15:49
@mitaki: Nein, sowohl IE7, als auch MF verursachen denselben Fehler
@mq: Zum testen hab ich wirklich nur diese beiden Dateien (ohne zusammenhängende Webseite) genutzt. Und ich sehe darin keinen Fehler, sodass die Datei 2x aufgerufen werden könnte.
Außerdem schau ich hauptsächlich per phpMyAdmin und der Timestamp ist exakt derselbe, demnach schließe ich einen Reload außerdem aus.

Vielleicht nützt es ja jemandem:

Funpic --> Funktioniert korrekt
Serverdrome --> Error

mitaki
25.01.2007, 21:32
Außerdem schau ich hauptsächlich per phpMyAdmin und der Timestamp ist exakt derselbe, demnach schließe ich einen Reload außerdem aus.
Der Unterschied bei einem Timestamp ist eine Sekunde, in dieser Zeit könnte das Skript zigmal gerufen werden, bevor die Sekunde zu Ende ist.

Besteht wirklich kein weiterer Unterschied zwischen deinen Dateien und dem geposteten Quelltext?

Demonking
25.01.2007, 21:38
hätte auch mal frage woher das hier komt :o

$username = $_POST["autor"];

sehe im Foumlar nix was denn "name" autor hat.
Sicher das dann wirklich nix dazwischen funkt? ^^
Oder mal neu uploaden,vllt einfach einmal korrigiert udn net neu geuploadet.

Antares
25.01.2007, 22:31
Ja, Autor hab ich im Postscript nicht dabei, aber das ändert nichts, denn Autor wird sowieso nicht in die Db eingetragen. zumindest laut aktuellem Script nicht.
@mitaki: Mit Reload meine ich einen manuellen Reload, der ausversehen passieren könnte.

*edit*
Nochmal der exakte Code:





<?php

$verbindung = mysql_connect ("localhost",
"...", "...")
or die ("keine Verbindung möglich.
Benutzername oder Passwort sind falsch");

mysql_select_db("...")
or die ("Die Datenbank existiert nicht.");

//Variabeln initalisieren
$message = $_POST["message"];
$username = $_POST["autor"];
$titel = $_POST["titel"];
$zeit = time();



// Daten eintragen

$eintrag = "INSERT INTO news
(message, titel, zeit)
VALUES
('$message', '$titel', '$zeit')";

$eintragen = mysql_query($eintrag);

if($eintragen == true)
{
echo "<div align=\"center\" style='color: white; '><br /><br />Eintrag war erfolgreich. <br /> <br/> <a style='color: white; ' href=\"index.php\">Weiter »</a></div>";
}
else
{
echo "Fehler beim Speichern";
}



?>



So, hab nur die Zugansdaten editiert.




<form action='news_eintrag.php' method='post'>
<br>


<div style='margin-bottom: 10px;'>
<b style='color: white;'>Titel:</b><br />
<input type='text' name='titel' style='border: 1px solid #666666; background: #EEEEEE;' />
</div>

<div style='margin-bottom: 10px;'>
<b style='color: white;'>Autor:</b><br />

</div>


<b style='color: white;'>Text:</b><br />
<textarea cols='40' rows='10' name='message' style='border: 1px solid #666666; background: #EEEEEE;'></textarea>
<br /><br /><input type='submit' value='Absenden' style='border: 1px solid #666666; background: #EEEEEE;'>
</form>



Exakt übernommen.

Ich weiß, manche Stellen mögen sinnlos wirken, allerdings funktioniert der Script auf exakt diese Weise nicht, und deshalb hab ich die seltsamen Stellen (die aber keine Fehler enthalten) übernommen.

Achja:
Der Server ist sehr seltsam.
Letztens habe ich eine fehlerhafte PHP Datei inkludiert, doch es kam keine Fehlermeldung, sondern es wurde einfach nichts angezeigt.

mitaki
25.01.2007, 22:37
Eine ganz banale Idee:
Würde sich etwas ändern, wenn du bei der letzten IF-Abfrage den „== true“-Abschnitt weglässt (der ohnehin nicht notwendig ist)?

Ansonnsten könntest du auch mal versuchen, die Dateien auf dem fehlerhaften Server zu löschen und neu hochzuladen, wie Demonking vorschlug, eventuell hat sich beim hochladen wirklich ein Fehler eingeschlichen.

Antares
25.01.2007, 22:41
Eine ganz banale Idee:
Würde sich etwas ändern, wenn du bei der letzten IF-Abfrage den „== true“-Abschnitt weglässt (der ohnehin nicht notwendig ist)?



Ändert leider nichts.



Ansonnsten könntest du auch mal versuchen, die Dateien auf dem fehlerhaften Server zu löschen und neu hochzuladen, wie Demonking vorschlug, eventuell hat sich beim hochladen wirklich ein Fehler eingeschlichen.

Neu hochladen?
Naja ich erstelle und editiere sämtliche Dateien online, von daher kann man das vergessen.


*Edit*
Ich frag mich eigentlich, warum ich euch mit massig Quelltext zuspamme..




<?php

$verbindung = mysql_connect ("localhost",
".", ".")
or die ("keine Verbindung möglich.
Benutzername oder Passwort sind falsch");

mysql_select_db(".")
or die ("Die Datenbank existiert nicht.");


$message = "hallo";


$eintrag = "INSERT INTO news
(message)
VALUES
('$message')";

$eintragen = mysql_query($eintrag);

?>


Allein dieses Script führt zu exakt demselben Fehler !

mitaki
25.01.2007, 22:55
Der Server ist sehr seltsam.
Letztens habe ich eine fehlerhafte PHP Datei inkludiert, doch es kam keine Fehlermeldung, sondern es wurde einfach nichts angezeigt.
Ah, deine Administration will keine Fehlermedlungen für die Benutzer sichtbar machen.

Füge bitte eine dieser Zeilen ganz oben in dein PHP-Skript ein:

/* PHP 4 */: error_reporting(E_ALL);
/* PHP 5 */: error_reporting(E_ALL|E_STRICT);

Nachtrag:

Allein dieses Script führt zu exakt demselben Fehler !
Gut, wenn das nichts ergibt, frage bitte den Support des betroffenen Servers (sofern vorhanden).

Antares
25.01.2007, 23:00
Also, so:





<?php

/* PHP 4 */: error_reporting(E_ALL);
/* PHP 5 */: error_reporting(E_ALL|E_STRICT);

$verbindung = mysql_connect ("localhost",
".", ".")
or die ("keine Verbindung möglich.
Benutzername oder Passwort sind falsch");

mysql_select_db(".")
or die ("Die Datenbank existiert nicht.");


$message = "hallo";


$eintrag = "INSERT INTO news
(message)
VALUES
('$message')";

$eintragen = mysql_query($eintrag);

?>



Resultat: Seite bleibt leer (weiß); Nichts wird in die DB eingetragen.

mitaki
25.01.2007, 23:09
Füge bitte eine dieser Zeilen ganz oben in dein PHP-Skript ein:
:rolleyes: Ich habe die großen PHP-Versionen absichtlich getrennt, damit diese sich nicht in die Quere kommen.

Wenn du deine PHP-Version nicht kennst kannst du sie über phpversion() ausgeben.

Antares
25.01.2007, 23:13
:rolleyes: Ich habe die großen PHP-Versionen absichtlich getrennt, damit diese sich nicht in die Quere kommen.


Sorry, mein Fehler.
Ändert aber nichts.



Wenn du deine PHP-Version nicht kennst kannst du sie über phpversion() ausgeben.


lol, nicht mal das funktioniert.
Aber laut phpinfo() ist es 5

mitaki
25.01.2007, 23:19
lol, nicht mal das funktioniert.
Mit echo vorne dran?

Ansonnsten hat dein Provider da wohl nur eine schlechte PHP-Immitation :D

Naja, da das Eintragen ja funktioniert hilft wohl auch kein (echo) mysql_error() bzw. mysql_errno().

Sorry, mehr fällt mir wirklich nicht ein.

Antares
25.01.2007, 23:22
Hat auch keinen wirklichen Sinn mehr.
Hab dem Besitzer empfohlen mal schnellstens den Webspaceanbieter zu wechseln.
Trotzdem danke an alle, vorallem an mitaki ;)

Blakkeight
26.01.2007, 17:29
Hi Leute,

wie kann ich fuer meine MySQL Querys eine Log Datei Schreiben? Am besten in einer Funktion. Ich Stelle mir das so vor:


$query = "SELECT ... WEHRE ...";
$sql = mysql_query($query) OR mysqlErrorLog();

So stell ich mir das vor aber irgend wie geht das nicht KP wieso. =)

Kennt jemand noch seiten wo ich Allgemeines zum Lesen ueber LogDatein mit PHP und MySQL finde?

mitaki
26.01.2007, 18:20
Zunächst würde ich den Aufruf der Logfunktion anders aufbauen.


$sql = mysql_query( '[...]' );
if ( !$sql ) mysqlErrorLog();


Dass es nicht funktioniert liegt daran, dass PHP (bzw. die MySQL-API) keine Funktion namens mysqlErrorLog() kennt. Diese müsstest du zunächst selbst erstellen.


function mysqlErrorLog() {

/* Hier steht, was die Funktion machen soll. */

}

In dieser Funktion möchtest du sicher mit Textdateien arbeiten. Beispielsweise deren bisherigen Inhalt auslesen, oben neuen Inhalt hinzufügen und das ganze dann wieder in die Textdatei speichern.
Leider finde ich gerade keine guten und aktuellen Tutorials für das Arbeiten mit Textdateien :/
Eventuell dieses (http://www.devmag.net/webprog/php_textdateien.htm), aber bitte nicht die short-tags übernehmen ;)
Für die Fehlerinformationen stehen PHP die Funktionen mysql_error() und mysql_errno() zur Verfügung.

Blakkeight
27.01.2007, 00:05
Dass es nicht funktioniert liegt daran, dass PHP (bzw. die MySQL-API) keine Funktion namens mysqlErrorLog() kennt. Diese müsstest du zunächst selbst erstellen.
Das ist mir bewusst, das ist ja auch eine eigene Funktion und die wollte ich ja nun mit mysql_query() OR mysqlErrorLog() aufrufen. Ansich Funktionierte ja auch die Funktion nur halt nicht in Verbindung mit OR...

...

Ah ich seh grad ich habe noch das die() vergessen. =)


$query = "SELECT ... WEHRE ...";
$sql = mysql_query($query) OR die(mysqlErrorLog());
# und dann noch die If abfragen. ;)

So sollts eigentlich aussehen.

mitaki
27.01.2007, 00:11
Ah ich seh grad ich habe noch das die() vergessen. =)
Wobei die() der schlechteste aller Fehlerhandler ist. Nach die() wird das Skript nicht mehr weiterverarbeitet.


<?php
echo 'test';
die('stirb');
echo 'ende';
?>
Siehste?

Beim Testen mag das noch in Ordnung sein, aber bei einer öffentlichen WebApp wäre das unter Umständen fatal.

Blakkeight
27.01.2007, 00:55
Stimmt eigentlich. =)
Mal gucken was ich so naechste Woche hingebastelt bekomme.

Danke schon mal.

drunken monkey
27.01.2007, 11:42
Wobei die() der schlechteste aller Fehlerhandler ist. Nach die() wird das Skript nicht mehr weiterverarbeitet.
Naja, oft ist das ja genau das, was man will. o_O Man muss halt nur vorher alles machen, was man bei einem Fehler machen will, aber dann ist an die () oder exit doch nichts auszusetzen. .___.
Es sei denn natürlich, der Fehler ist nicht so schwer und man kann trotzdem weitermachen...

Das ist mir bewusst, das ist ja auch eine eigene Funktion und die wollte ich ja nun mit mysql_query() OR mysqlErrorLog() aufrufen. Ansich Funktionierte ja auch die Funktion nur halt nicht in Verbindung mit OR...
Also dein Problem ist, dass selbst wenn mysql_query() "false" zurückgibt, mysqlErrorLog() nicht aufgerufen wird? o_O Erschiene mir merkwürdig, bei mir funktioniert das problemlos! http://www.multimediaxis.de/images/smilies/old/1/gruebel.gif Bist du dir sicher, dass es nicht aufgerufen wird, und nicht nur nicht funktioniert?
Ansonsten würde ich das die() weglassen und stattdessen exit entweder in die Funktion schreiben, oder, noch besser, mitakis sauberere Version - ohne "or", dafür mit anschließender if-Abfrage - mit einem exit drin verwenden. Also in etwa:

$query = 'SELECT ... WHERE ...';
$sql = mysql_query ($query, $db); // Man sollte besser immer auch den Zeiger auf die Datenbank übergeben
if (!$sql) {
mysqlErrorLog ();
exit;
}


$query = "SELECT ... WEHRE ...";
$sql = mysql_query($query) OR die(mysqlErrorLog());
# und dann noch die If abfragen. ;)
Ich denke zwar nicht, dass es das ist, aber du hast "WHERE" falsch geschrieben, auch im vorigen Post.

Blakkeight
27.01.2007, 15:00
Ich denke zwar nicht, dass es das ist, aber du hast "WHERE" falsch geschrieben, auch im vorigen Post.
Im Code bei mir ist es richtig geschrieben, hier sollte es ja auch nur ein bsp. sein wie es bei mir ungefaehr aussieht, den Original Code habe ich leider auch nicht hier, erst ende der Woche wenn mein Laptop wieder Zuhause ist. (Aus Faulheit auf Schule gelassen.)

Wie gesagt ich Spiel mir die Woche noch einen mit weg und dann sehen wa weiter und ich meld mich noch mal. ;)

Danke schon mal fuer eure Bemuehungen. ;)

Tessio
27.01.2007, 17:36
Hi Leute.
Also, ich wollte mich mal in Sachen Sicherheit weiterbilden.
Dabei geht es mir um zwei große Bereiche : Ein Loginscript und Eintragen von Formulartexten in Datenbanken.

Zum ersteren : Kann man im Array $_SESSION rumfummeln?
Bei den meisten Tuts wird der geschütze Inhalt dann gezeigt, wenn ein bestimmter Wert in das Array SESSION geschrieben wurde, also zum Beispiel, wenn $_SESSION[benutzer_id] angegeben ist, was passiert, wenn man die Logindateien korrekt eingegeben hat.
Ist das sicher? Ich habe zur Sicherheit noch einen anderen notwendigen Wert in das Array schreiben lassen, wenn die Daten korrekt waren, denn auf manchen Seiten wird geschrieben, man soll den Namen des Schlüssels im SESSION Array nicht zu einfach machen.
Folglich muss man in dem Array ja auch rumwurschteln können, oder wie meinen die das?

Zum letzten :
Ich bin allgemein in solchen Sachen nicht sonderlich begabt, also in Sachen Sicherheit.
Wenn ich beispielsweise in einem Kommentarsystem die Eingaben so wie sie da stehen in die Datenbank eintrage und sie erst beim Ausgeben mit htmlspecialchars und nl2br umwandeln lasse, kann das auch Schaden in der Datenbank oder sonst wo anrichten?
Gebet mir euer Wissen über Sicherheit, ich brauche es. ;_;
Und ja ich weiss, dass mal eigentlich keine totale Sicherheit erreichen kann.

Blakkeight
27.01.2007, 17:58
Zu den Sessions, vlt findest ja hier (http://www.selfphp.de/praxisbuch/praxisbuch.php?group=34) was. ;)

Vorm eintragen in die DB:
Addslashes (http://www.selfphp.de/funktionsreferenz/string_funktionen/addslashes.php)
Trim (http://www.selfphp.de/funktionsreferenz/string_funktionen/trim.php)
HTMLSpecialChars (http://www.selfphp.de/funktionsreferenz/string_funktionen/htmlspecialchars.php)
Strip Tags (http://www.selfphp.de/funktionsreferenz/string_funktionen/strip_tags.php)

Beim Auslesen/Anzeigen:
nl2br (http://www.selfphp.de/funktionsreferenz/string_funktionen/nl2br.php)
Stripslashes (http://www.selfphp.de/funktionsreferenz/string_funktionen/stripslashes.php)

So mach ich es, damit keiner unerwuenschten Code reinschreibt.

mitaki
27.01.2007, 19:38
@Samogas. Das mit der Session verstehe ich nicht ganz. Arbeitest du nach einem Tutorial und verstehst nicht was gemeint ist?

Zur Sache mit DB/Benuterangaben:

Momentan wird bei den meisten PHP-Anbietern auf Daten, die vom Benutzer kommen (Cookie-, Get- und Postdaten) automatisch addslashes angewendet.

Es ist empfehloenswert, bei Daten, die du in die Datenbank schreibst zuerst stripslashes() anzuwenden und dann die datenbankspezifische Maskierungsfunktion [MySQL: mysql_real_escape_string()]. Dadurch werden alle Zeichen, die für das Datenbanksystem gefährlich sind maskiert (bzw. escaped).

Wenn du die Daten aus der Datenbank herausholst sind diese nicht mehr escaped, ist auch meistens nicht nötig. Je nachdem, wozu du diese Daten dann verwenden willst kannst du htmlentities() und nl2br() darauf anwenden.

Tessio
27.01.2007, 20:55
Erstmal danke an euch beide. ^_^


@Samogas. Das mit der Session verstehe ich nicht ganz. Arbeitest du nach einem Tutorial und verstehst nicht was gemeint ist?
Doch doch, ich verstehe es schon.
Ich hab ja nur gefragt, ob der Internetnutzer auf einer fremden Seite in einer gestarteten Session die Werte in dem SESSION-Array verändern kann, weil bei diesem Turorial halt gesagt wurde, man soll die Benennung schwerstmöglich machen.
Das wäre aber sehr sinnlos, wenn man das könnte, also wird es wohl nicht so sein.
Wie sieht es denn mit der Session-ID aus? Die wird ja, wenn nicht anders eingestellt, als Cookie gespeichert.
Sollte man sich bei der Art der ID-Speicherung noch Gedanken um die Sicherheit machen?
Der einzige Weg, der mir einfällt, um an eine S-ID von einem anderen zu kommen, wäre, dass dieser an dessen PC geht oder sich die ID geben lässt.
Oder gibts da auch fießere Tricks?
(Wie ihr sicher merkt, habe ich schon ganz böse Erfahrungen in Sachen Admin Bereich machen müssen ;_;)


Zur Sache mit DB/Benuterangaben:

Momentan wird bei den meisten PHP-Anbietern auf Daten, die vom Benutzer kommen (Cookie-, Get- und Postdaten) automatisch addslashes angewendet.

Es ist empfehloenswert, bei Daten, die du in die Datenbank schreibst zuerst stripslashes() anzuwenden und dann die datenbankspezifische Maskierungsfunktion [MySQL: mysql_real_escape_string()]. Dadurch werden alle Zeichen, die für das Datenbanksystem gefährlich sind maskiert (bzw. escaped).

Wenn du die Daten aus der Datenbank herausholst sind diese nicht mehr escaped, ist auch meistens nicht nötig. Je nachdem, wozu du diese Daten dann verwenden willst kannst du htmlentities() und nl2br() darauf anwenden.
Vielen dank. :)


Zu den Sessions, vlt findest ja hier (http://www.selfphp.de/praxisbuch/praxisbuch.php?group=34) was. ;)
Nicht wirklich das, was meine Frage direkt beantwortet, aber auch nützlich, danke. ^^


Vorm eintragen in die DB:
Addslashes (http://www.selfphp.de/funktionsreferenz/string_funktionen/addslashes.php)
Trim (http://www.selfphp.de/funktionsreferenz/string_funktionen/trim.php)
HTMLSpecialChars (http://www.selfphp.de/funktionsreferenz/string_funktionen/htmlspecialchars.php)
Strip Tags (http://www.selfphp.de/funktionsreferenz/string_funktionen/strip_tags.php)

Beim Auslesen/Anzeigen:
nl2br (http://www.selfphp.de/funktionsreferenz/string_funktionen/nl2br.php)
Stripslashes (http://www.selfphp.de/funktionsreferenz/string_funktionen/stripslashes.php)

So mach ich es, damit keiner unerwuenschten Code reinschreibt.
Alles klar. _o/

mitaki
27.01.2007, 21:37
Wie ihr sicher merkt, habe ich schon ganz böse Erfahrungen in Sachen Admin Bereich machen müssen ;_;
Wenn das deine Problematik ist, dann ist HTTP-Authentifizierung (.htaccess) empfehlenswert. Sehr sicher und bei einem entsprechendem Passwort nur mit BruteForce knackbar ;)


Ich hab ja nur gefragt, ob der Internetnutzer auf einer fremden Seite in einer gestarteten Session die Werte in dem SESSION-Array verändern kann, weil bei diesem Turorial halt gesagt wurde, man soll die Benennung schwerstmöglich machen.
Ja, sofern sich dieser Benutzer die entsprechende Session zu eigen macht und die Anwendung entsprechende Bearbeitungsformulare bietet.
Hast du eventuell die Adresse dieses Tutorials parat?


Wie sieht es denn mit der Session-ID aus? Die wird ja, wenn nicht anders eingestellt, als Cookie gespeichert.
Unter Umständen kann die SID dennoch in die URI geschrieben werden. Dann reicht eventuell eine kopierte Adresse um sich die Sitzung zu eigen zu machen.


Sollte man sich bei der Art der ID-Speicherung noch Gedanken um die Sicherheit machen?
Alles was irgendwie vom Benutzer kommt ist potenziell gefährlich. Wenn du eine Sitzung startest und die ID per URI weitergibst kannst du z.B. prüfen, ob bei einem Neuaufruf mit dieser ID die IP-Adresse noch identisch ist.


Der einzige Weg, der mir einfällt, um an eine S-ID von einem anderen zu kommen, wäre, dass dieser an dessen PC geht oder sich die ID geben lässt.
Es gibt mehrere Wege, Session IDs oder allgemein Cookies zu stehlen, das hängt meist mit fehlerhafter Programmierung zusammen.

Nebenbei zur strip_tags-Funktion. Diese ist nur bedingt nützlich, da anscheinend alles was die Form <*> hat entfernt wird.

Tessio
27.01.2007, 22:34
Wenn das deine Problematik ist, dann ist HTTP-Authentifizierung (.htaccess) empfehlenswert. Sehr sicher und bei einem entsprechendem Passwort nur mit BruteForce knackbar ;)
Das ACP war mit .htaccess geschützt. :/
Halt nur mit .htaccess, jetzt will ichs so sicher wie möglich haben. ;_;



Ja, sofern sich dieser Benutzer die entsprechende Session zu eigen macht und die Anwendung entsprechende Bearbeitungsformulare bietet.
Nunja, klingt beunruhigend. ^^


Hast du eventuell die Adresse dieses Tutorials parat?
Indirekt. Das war eher sowas "fertiges", was ich mir angeschaut und in der Art nachgeschrieben habe. Ich kann aber gerne zeigen, was das System macht :


In der index.php, also dem eigentlichen Admin Bereich, wird checkuser.php inkludiert (gibts das Wort?).
In der steht :


<?php
session_start ();
if (!isset ($_SESSION["blablabla"])) {
header ("Location: formular.php");
}
?>
formular.php :

<?php session_start (); ?>
<html>
<head>
<title>Login</title>
</head>

<body>
<?php
if (isset ($_REQUEST["fehler"])) {
echo "Die Zugangsdaten waren ungültig.";
}
?>

<form action="login.php" method="post">
Name: <input type="text" name="name" size="20" /><br />
Kennwort: <input type="password" name="pwd" size="20" /><br />
<input type="submit" value="Login" />
</form>

</body>
</html>
Nicht den Code, also den Rest außer dem Script kritisieren, ich schreibs ja noch um. >_>

login.php :


<?php
session_start ();
$connectionid = mysql_connect ("localhost", "...", "...");
if (!mysql_select_db ("...", $connectionid)) {
die ("Keine Verbindung zur Datenbank");
}

$sql = "SELECT ".
"ID, name ".
"FROM ".
"...".
"WHERE ".
"(name like '".$_REQUEST["name"]."') AND ".
"(kennwort = '".MD5($_REQUEST["pwd"])."')";
$result = mysql_query ($sql);

if (mysql_num_rows ($result) > 0)
{
$data = mysql_fetch_array ($result);

$_SESSION["blabla"] = $data["ID"];
$_SESSION["blabla"] = $data["name"];

header ("Location: index.php");
}
else
{
header ("Location: formular.php?fehler=1");
}

Ja, schrecklicher Code, besonders der SQL Befehl. :x
Wird auch umgeschrieben.

Die logout.php:

<?php
// Wird ausgeführt um mit der Ausgabe des Headers zu warten.
ob_start ();

session_start ();

if (!isset ($_SESSION["blabla"]))
{
die('Warst nicht angemeldet!');
}


session_unset ();
session_destroy ();

header ("Location: formular.php");
ob_end_flush ();
?>
Um ehrlich zu sein weiss ich nicht, was ob_start und ob_end_flush bedeuten. ;_;
--- Ja. Ich wusste nicht so, aber ich hab mal ein paar Sachen in den Arrays zensiert, vielleicht wars ja nicht nötig. ._.



Alles was irgendwie vom Benutzer kommt ist potenziell gefährlich. Wenn du eine Sitzung startest und die ID per URI weitergibst kannst du z.B. prüfen, ob bei einem Neuaufruf mit dieser ID die IP-Adresse noch identisch ist.
Naja, ich gehe die ID ja nicht per URI weiter.

Danke. :)

mitaki
27.01.2007, 22:52
Das ACP war mit .htaccess geschützt. :/
Halt nur mit .htaccess, jetzt will ichs so sicher wie möglich haben. ;_;
Wo war dann das Problem?


Nunja, klingt beunruhigend.
Wenn jemand deine Sitzung klauen kann ist das der Schlüssel. Letzteres bedeutet, dass du im ACP ermöglichst, Passwort und andere Daten, die du in $_SESSION speicherst verändern kannst.


Indirekt.
Schlecht, ich habe eher darauf abgezielt zu erfahren wer

Folglich muss man in dem Array ja auch rumwurschteln können, oder wie meinen die das? sind.
Allerdings sind die SChlüssel eines Arrays nur selten gefährlich - imho.


Um ehrlich zu sein weiss ich nicht, was ob_start und ob_end_flush bedeuten. ;_;
ob_start() bedeutet, dass der von PHP erzeugte Quelltext zwischengespeichert wird. Dadurch wird es z.B. möglich, header nach echo aufzurufen, was aber schlechter Stil ist imho.
ob_end_flush() liest den ZWischenspeicher und gibt ihn aus.

underdark
27.01.2007, 23:45
Den IE stört das negative margin oben in div.box_head. Wenn du für den IE das margin in div.box_head von rundherum -10px auf 0 -10px -10px umänderst (d.h. oben 0, links, rechts und unten aber weiterhin -10px margin) löst sich das Problem.
Danke. Hat geklappt nachdem ich auch noch ein bisschen Code in den Überschriften Formatierungen geändert hab.

Tessio
27.01.2007, 23:58
Wo war dann das Problem?
Das Problem machte in Form eines "owned" Bildes auf jeder zu verwaltenden Seite auf sich aufmerksam...


Schlecht, ich habe eher darauf abgezielt zu erfahren wer "die" sind.
Ah, hab die Seite wiedergefunden. _o/
Hans Wurst backt Pflaumen (http://www.it-academy.cc/article/1455/PHP:+LoginScript+(Sicherheit+mit+Sessions).html)
Ich zitiere :

Die Sicherheit Ihrer Webseite ist beim Einsatz von Sessions nur dann gefährdet, wenn jemand die aktuelle Session-Id errät oder Zugriff auf Ihren Session-Ordner erlangt. Insbesondere bei kommerziellen Seiten sollte ein solcher Zugriff ausgeschlssen sein und der Session-Ordner auch nicht unbedingt den Standartnamen besitzen und im Standartverzeichnis (z.b C:\...\tmp) abgelegt sein. Wenn Sie dann noch den Variablenamen für die Session-ID so wählen, dass er schwer zu erraten ist, haben Sie schon ein gewisses Mass an Sicherheit erreicht!
Das hat diese Frage in mir geweckt.
Und ich sehe gerade, dass ich an etwas völlig anderes gedacht habe. oO


ob_start() bedeutet, dass der von PHP erzeugte Quelltext zwischengespeichert wird. Dadurch wird es z.B. möglich, header nach echo aufzurufen, was aber schlechter Stil ist imho.
ob_end_flush() liest den ZWischenspeicher und gibt ihn aus.
Okay. \o_

mitaki
28.01.2007, 00:43
Danke. Hat geklappt nachdem ich auch noch ein bisschen Code in den Überschriften Formatierungen geändert hab.
Freut mich :)


Das Problem machte in Form eines "owned" Bildes auf jeder zu verwaltenden Seite auf sich aufmerksam...
Und du meinst oder kannst bestätigen, dass die Lücke bei der HTTP-Authentifizierung lag?


Wenn Sie dann noch den Variablenamen für die Session-ID so wählen, dass er schwer zu erraten ist, haben Sie schon ein gewisses Mass an Sicherheit erreicht!
Ich sehe da keinen Zusammenhang. Benutzerdaten kommen entweder aus Cookies, oder Formularen (ein kleiner Teil auch auch _SERVER-Daten). Diese haben meist nicht viel mit den _SESSION-Schlüsseln zu tun. Ohnehin frage ich mich, wie der Autor darauf kommt, diese Schlüssel seien eine Gefahr.

Meiner Meinung nach ist dieses Tutorial nicht sehr gehalt- und sinnvoll. Der Autor scheint weder sonderlich recherchiert noch den Text überprüft zu haben.

Tessio
28.01.2007, 01:26
Und du meinst oder kannst bestätigen, dass die Lücke bei der HTTP-Authentifizierung lag?
Nope.
Aber nunja.
Es ist kurz nach der Einführung des ACPs passiert, davor war alles okay und ich hab das FTP Passwort danach nicht geändern, trotzdem kam das nie wieder.
Naja, ich weiss ja auch nicht, du bist hier der Profi, bei mir ists dann doch nur die Intuition. http://www.multimediaxis.de/images/smilies/old/1/nixweiss.gif


Ich sehe da keinen Zusammenhang. Benutzerdaten kommen entweder aus Cookies, oder Formularen (ein kleiner Teil auch auch _SERVER-Daten). Diese haben meist nicht viel mit den _SESSION-Schlüsseln zu tun. Ohnehin frage ich mich, wie der Autor darauf kommt, diese Schlüssel seien eine Gefahr.
Wie dem auch sei, ich wollte halt nur ein Loginscript anschaun und da das funktionierte, hab ichs genommen.
Danke für deine Aufklärung.


Meiner Meinung nach ist dieses Tutorial nicht sehr gehalt- und sinnvoll. Der Autor scheint weder sonderlich recherchiert noch den Text überprüft zu haben.
Ausgeschlssn! :D

_o/

mitaki
28.01.2007, 01:53
Naja, ich weiss ja auch nicht, du bist hier der Profi, bei mir ists dann doch nur die Intuition.
Die HTTP-Methode ist meines Erachtens schon sehr sicher und nicht für dein Problem verantwortlich. Natürlich schließt das keine Passworte wie „password1“ mit ein ;)


Wie dem auch sei, ich wollte halt nur ein Loginscript anschaun und da das funktionierte, hab ichs genommen.
Ich will dir nicht den Mut nehmen, wie es mir jetzt vorkommt.
Loginbereiche sind ein relativ komplexes Thema, ich gebe dir folgenden Gedanken mit auf den Weg:

Überlege, welche Möglichkeiten du hast, nach dem Login angemeldet zu bleiben. Dann überlege dir, wie du prüfen kannst, ob auch tatsächlich der echte Benutzer die Seite aufgerufen hat und erlaube bzw. verweigere den Zugriff je nach Ergebnis. Es besteht dann zwar ein Restrisiko, aber das ist ja immer gegeben.


Ausgeschlssn! :D
Ach komm^^ Wie viele der selbsternannten Profis sind schon echt?

Tessio
28.01.2007, 03:38
Die HTTP-Methode ist meines Erachtens schon sehr sicher und nicht für dein Problem verantwortlich. Natürlich schließt das keine Passworte wie „password1“ mit ein ;)
Das Password war ein 32-Stellen String, also mit MD5 generiert (ich glaube das verschlüsselte Wort war Ananasbananensplitcouch), das von dem damals noch alleineherrschenden Admin (meine Wenigkeit) in Textform auf einem Zettel niedergeschrieben war und nein, bei mir kommt keiner ins Haus, der auch nur die Seite kennt. However. Passwort war sicher. Relativ.


Ich will dir nicht den Mut nehmen, wie es mir jetzt vorkommt.
Loginbereiche sind ein relativ komplexes Thema, ich gebe dir folgenden Gedanken mit auf den Weg:

Überlege, welche Möglichkeiten du hast, nach dem Login angemeldet zu bleiben. Dann überlege dir, wie du prüfen kannst, ob auch tatsächlich der echte Benutzer die Seite aufgerufen hat und erlaube bzw. verweigere den Zugriff je nach Ergebnis. Es besteht dann zwar ein Restrisiko, aber das ist ja immer gegeben.
Hmhm, danke, mein eigentliches Problem ist dann doch eher die Unkreativität, da mir jetzt kein besserer Weg als der im oben gespoilerten Loginscript einfällt...
Ich bin noch ein Greenhorn. =_=



Ach komm^^ Wie viele der selbsternannten Profis sind schon echt?
Alles klar. mitaki ist ein Bot. :o

*shrug* Hmhm, hoffentlich leidet der Thread nicht allzu dolle an diesem Dialog. *hust* >.>

Manni
28.01.2007, 11:28
Ah, hab die Seite wiedergefunden. _o/
Hans Wurst backt Pflaumen (http://www.it-academy.cc/article/1455/PHP:+LoginScript+(Sicherheit+mit+Sessions).html)
Ich zitiere :


Die Sicherheit Ihrer Webseite ist beim Einsatz von Sessions nur dann gefährdet, wenn jemand die aktuelle Session-Id errät oder Zugriff auf Ihren Session-Ordner erlangt. Insbesondere bei kommerziellen Seiten sollte ein solcher Zugriff ausgeschlssen sein und der Session-Ordner auch nicht unbedingt den Standartnamen besitzen und im Standartverzeichnis (z.b C:\...\tmp) abgelegt sein. Wenn Sie dann noch den Variablenamen für die Session-ID so wählen, dass er schwer zu erraten ist, haben Sie schon ein gewisses Mass an Sicherheit erreicht!

Das hat diese Frage in mir geweckt.
Und ich sehe gerade, dass ich an etwas völlig anderes gedacht habe. oO

Wenn irgendjemand in deinem Session-Verzeichnis rumpfuschen kann, läuft schonmal irgendwas ziemlich falsch. Dann sollte man sich lieber darüber Gedanken darüber machen, was man da falsch gemacht hat.
Ich würde außerdem das Passwort nicht in der Session speichern, schon allein um es vor einem Auslesen durch den Admin zu schützen.

Ich würde eher darauf tippen, das jemand dein FTP Passwort herausgefunden oder auf eine andere Art und Weise Zugriff auf den FTP Server bekommen hat. (auch wenn du das Passwort danach nicht geändert hast...)

mitaki
28.01.2007, 19:24
Alles klar. mitaki ist ein Bot. :o
Du schmeichelst mir. :D

Ich selbst würde mich nicht als Profi bezeichnen, dazu gibt es in diesem bereich noch viel zu vieles, dass ich nicht verstehe. Aber ich bin in der Hinsicht immer lernbereit, so zur Info, ne?^^


*shrug* Hmhm, hoffentlich leidet der Thread nicht allzu dolle an diesem Dialog. *hust* >.>
Wenn wir jetzt aufhören, eher nicht ;)

Antares
03.02.2007, 18:44
Ich suche eine Möglichkeit den Zugriff zu bestimmten Inhalten nur registrierten Nutzern zu gewähren.
Lass ich die entsprechende Datei includen und man ist nicht eingeloggt, so wird die() ausgeführt.
Alleerdings wird sämtlicher Code, der nach die() komtm nicht mehr berücksichtigt, also ist in diesem Moment (auch wenn es nur ein kurzer ist das rechts Menü und der Footer weg.
Gibt es da eine Alternative zu die() ?

Blakkeight
03.02.2007, 19:15
evtl. exit().

e:
INFO (http://www.selfphp.de/funktionsreferenz/sonstige_funktionen/exit.php)

mitaki
03.02.2007, 19:22
Falls es dir nicht zu komplex ist würde ich dir raten, am Anfang der Hauptdatei die Benutzerprüfung einzubauen und darauf aufbauend eine Variable oder Konstante zu erstellen, die true ist, wenn man sich richtig eingeloggt hat und false, wenn es beim Login Probleme gab.

Antares
04.02.2007, 15:28
Öhm, ich bin ja auch selten blöd..

Ich habe mir diesen Code gebastelt:



if($erfolg != "login")
{
die ("Bitte erst <a href=\"index.php\">einloggen</a>");
}
else
{
// hier folgt der normale Seitenaufbau...


So.
Da frage ich mich, warum ich eigentlich nicht gleich echo() anstatt die() verwendet habe -.-

Also, von daher hat sichs erledigt.

Tessio
04.02.2007, 15:50
Öhm, ich bin ja auch selten blöd..

Ich habe mir diesen Code gebastelt:



if($erfolg != "login")
{
die ("Bitte erst <a href=\"index.php\">einloggen</a>");
}
else
{
// hier folgt der normale Seitenaufbau...


So.
Da frage ich mich, warum ich eigentlich nicht gleich echo() anstatt die() verwendet habe -.-

Also, von daher hat sichs erledigt.

Unsicher. Schau bezüglich der Variable mal in mitakis neuestes Meisterwerk, dann wirst du wissen, wie man mit der nötigen Information Buhmann spielen kann. ;)

Antares
04.02.2007, 16:55
Unsicher. Schau bezüglich der Variable mal in mitakis neuestes Meisterwerk, dann wirst du wissen, wie man mit der nötigen Information Buhmann spielen kann. ;)

Schon, aber register_globals ist sowieso ausgeschaltet.

Blakkeight
04.02.2007, 17:03
Ich denke mal er meinte damit das du es auf diese weise machen sollst:

if($_GET['erfolg'] != "login")
{
die ("Bitte erst <a href=\"index.php\">einloggen</a>");
}
else
{
// hier folgt der normale Seitenaufbau...

Tessio
04.02.2007, 17:17
Ich würde das aber mit $_SESSION lösen, da man den Wert von $_GET-Variablen manuell ändern kann.

Antares
04.02.2007, 17:43
Nunja, also eigentlich wird die Variable $erfolg bei einem erfolgreichen Login auf "login" gesetzt und in der variable $_SESSION["status"] gespeichert.

Also, wo ist dabei das Problem?

Tessio
04.02.2007, 17:48
Nunja, also eigentlich wird die Variable $erfolg bei einem erfolgreichen Login auf "login" gesetzt und in der variable $_SESSION["status"] gespeichert.

Also, wo ist dabei das Problem?

Nirgens, wenn register_globals off ist.
Ich wollte nur bezüglich der GET-Variante von Jay Stellung nehmen, denn das wollte ich nicht sagen. ;)

Antares
04.02.2007, 18:41
Nirgens, wenn register_globals off ist.
Ich wollte nur bezüglich der GET-Variante von Jay Stellung nehmen, denn das wollte ich nicht sagen. ;)

Ja, ok danke =)
Jedenfalls ist die Webseite momentan sowieso auf Funpic, und denen geht Sicherheit nunmal vor.
Selbst addslashes() funktioniert dort automatisch.

mitaki
04.02.2007, 19:23
Selbst addslashes() funktioniert dort automatisch.
Wobei das inzwischen auch missbilligt ist, mehr dazu hoffentlich nächste Woche ;)
(ganz kleinen Hinweis geb).

Antares
10.02.2007, 00:20
Ich habe folgendes Problem:

Angenommen in einer Tabelle einer Datenbank befinden sich 50 Einträge.
So, jetzt möchte ich allerdings nur die letzen 40 ausgeben lassen.
Wie mach ich das?
Mit der Integer ID würde ich nicht so gerne arbeiten, denn wenn ein Eintrag mit der ID 13 gelöscht wird, erhält der nächste die ID 14 und es entsteht eine Lücke, die sich früher oder später wohl negativ auswirken wird.

Meine Frage bezieht sich auch vielmehr auf eine MySQL Funktion - gibt es da was?

Blakkeight
10.02.2007, 09:15
Das duerfte weiterhelfen.


mysql_query("SELECT * FROM tabelle LIMIT 10,50")
Wobei 10 der Startwert ist und 50 der Endwert.
Logisch oda?

mitaki
10.02.2007, 14:26
Das duerfte weiterhelfen.


mysql_query("SELECT * FROM tabelle LIMIT 10,50")
Wobei 10 der Startwert ist und 50 der Endwert.
Logisch oda?
Nein, 10 ist der Startwert und 50 ist die Anzahl der Einträge, die ab diesem Startwert augegeben werden.

Blakkeight
10.02.2007, 15:03
Arg sry, war wohl noch nen bissel frueh heut morgen. =)

Antares
10.02.2007, 15:04
Wenn ich den Endwert aber leer lasse, dann werden nur die ersten 10 angezeigt.
Gibts da einen Platzhalter für den Endwert, wenn ich quasi einfach nur "der Rest" eingeben will?
Oder ich zähle alle Einträge zusammen und subtrahiere davon 10 und schreibe diese neue Zahl als Endwert (in einer Variable)

Manni
10.02.2007, 15:58
Wenn du nur einen Wert angibst, ist das eben das Limit, also die maximale Anzahl.
Wenn du zwei Werte angibst, ist der erste die Startposition und der zweite die maximale Anzahl.
Wenn du x OFFSET y schreibst, ist x die maximale Anzahl und y deine Seite (10 OFFSET 5 würde die Einträge 51-60 zurückgeben)

Crash-Override
10.02.2007, 20:13
Hi, ich nutze dann auch mal diesen Thread, evt. kann mir hier jemand helfen. Es geht um ein kleines problem mit Javascript (zumindest denke ich das man es mit Javascript lösen muss).

Ich habe zwei DropDown-Listen mit identischen Einträgen. Hier will ich vermeiden das zwei mal das selbe ausgewählt werden kann (muss nicht mal während des Auswählens sein - eine Nachricht beim absenden würde eigentlich schon reichen. Sollte nicht soo komplex sein denke ich.

Das Formular wird wie folgt geniert:



<form action="match.php" method="get">
<select name="id1" size="1">
<?php
$i = True;
$id = 1;
while ($i) {
if ($teams[$id] != '') {
echo "<option value=".$id.">".$teams[$id]."</option>";
$id++;
}
else
$i = False;
}
?>
</select>
vs.
<select name="id2" size="1">
<?php
$i = True;
$id = 1;
while ($i) {
if ($teams[$id] != '') {
echo "<option value=".$id.">".$teams[$id]."</option>";
$id++;
}
else
$i = False;
}
?>
</select>
<input type="submit" value="GO!">
</form>
Ja, ich weiß, ist optimierbar.
Und ja: Ich weiß, man kann auch im PHP abfragen ob es dieselbe id ist, das tue ich ja auch, trotzdem währe es clientseitig wohl schöner.

edit: Nach einer größeren Recherche und einem zusammengeschnipseltem Javascript geht es (WOW):



<form action="match.php" method="get">
<select name="id1" size="1" onChange="change(this.form.id2, this.selectedIndex, 1)">
<?php
$i = True;
$id = 1;
while ($i) {
if ($teams[$id] != '') {
echo "<option ";
if ($id == 2) echo "disabled";
echo " value=".$id.">".$teams[$id]."</option>";
$id++;
}
else
$i = False;
}
?>
</select>
vs.
<select name="id2" size="1" onChange="change(this.form.id1, this.selectedIndex, 2)">
<?php
$i = True;
$id = 1;
while ($i) {
if ($teams[$id] != '') {
echo "<option ";
if ($id == 1) echo "disabled";
echo " value=".$id.">".$teams[$id]."</option>";
$id++;
}
else
$i = False;
}
?>
</select>
<input type="submit" value="GO!">
</form>

und


<script language="JavaScript" type="text/javascript">
<!--
var old1 = 0;
var old2 = 1;

function change(dropdown, id, num) {
if (dropdown.selectedIndex == id) {
if (dropdown.selectedIndex != 0)
dropdown.selectedIndex = 0;
else
dropdown.selectedIndex++;
}
if (num == 1) dropdown[old1].disabled=false;
if (num == 2) dropdown[old2].disabled=false;

dropdown[id].disabled=true;
if (num == 1) old1 = id;
if (num == 2) old2 = id;
}
//-->
</script>

drunken monkey
11.02.2007, 11:34
Wenn ich den Endwert aber leer lasse, dann werden nur die ersten 10 angezeigt.
Gibts da einen Platzhalter für den Endwert, wenn ich quasi einfach nur "der Rest" eingeben will?
Oder ich zähle alle Einträge zusammen und subtrahiere davon 10 und schreibe diese neue Zahl als Endwert (in einer Variable)

SELECT * FROM `foo` ORDER BY `id` DESC LIMIT 40;
Gibt in jedem Fall (es sei denn, es sind weniger als 40 Einträge vorhanden) die letzten 40 Einträge zurück. (Zumindest, wenn id immer erhöht wird, was ich mal annehme.)

underdark
11.02.2007, 17:23
Hi!
Hab ein Problem mit folgender Seite: klick hier (http://underdark.uttx.net/my_page/kontakt.php)
Wie bekomm ich die Fehlermeldungen weg. Is wahrscheinlich simpel, aber ich komm einfach nicht dahinter. Bin halt ein php-noob.
Hier der Quelltext:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>underdark_design</title>
<link rel="stylesheet" type="text/css" href="css/styles.css" />
</head>

<body>

<div id="head"><p><a href="kontakt.php" title="Kontakt">Kontakt</a> | <a href="impressum.html" title="Impressum">Impressum</a> | <a href="sitemap.html" title="Sitemap">Sitemap</a></p>
<img src="bilder/header.gif" alt="" width="760" height="36" /></div>

<div id="nav">
<div id="sprache">
<a href="#" title="deutsch"><img src="bilder/deu.gif" alt="Sprachumschaltung: Deutsch" /></a>
<a href="#" title="englisch"><img src="bilder/engl.gif" alt="change language: English" /></a> </div>
<ul>
<li><a href="index.html" title="Home">Home</a></li>
<li><a href="timeline.html" title="Timeline" >Timeline</a></li>
<li><a href="webdesign.html" title="Webdesign" >Webdesign</a></li>
<li><a href="rpgs.html" title="RPGs" >RPGs</a></li>
</ul>
<div class="clearer"></div>
</div>

<div id="cont">

<h1>Freu mich &uuml;ber Feedback! </h1>
<p>Einfach Formular ausf&uuml;llen und abschicken. </p>
<div class="text">
<form method="post" action="PhpFormMail.php?send=1">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Ihr Name:</td>
<td><input type="text" name="NAME" size="35" value="<?PHP ECHO $_POST[NAME]; ?>" /></td>
</tr>
<tr>
<td>Ihre Email-Adresse:</td>
<td><input type="text" name="EMAIL" size="35" value="<?PHP ECHO $_POST[EMAIL]; ?>" /></td>
</tr>
<tr>
<td>Betreff:</td>
<td><input type="text" name="SUBJECT" size="35" value="<?PHP ECHO $_POST[SUBJECT]; ?>" /></td>
</tr>
<tr>
<td>Kommentar:</td>
<td><textarea name="COMMENT" cols="45" rows="10"><?PHP ECHO $_POST[COMMENT]; ?></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="Send" value="Absenden" /></td>
</tr>
</table>

</form>

</div>
</div>
<div class="clearer"></div>
</body>
</html>

Danke im Vorhinein.

Crash-Override
11.02.2007, 17:43
erstmal: WTF? Wieso schreibst du alles groß? Das macht echt niemand.

zweitens: Du hast wohl die ' ' vergessen. So nimmt PHP an COMMENT wäre ein Konstanze statt wie du meinst ein String. Also mach ' (oder alternativ ", aber letzteres macht eigentlich auch niemand in diesem Fall) drum.

underdark
11.02.2007, 18:52
erstmal: WTF? Wieso schreibst du alles groß? Das macht echt niemand.

Werd ich mir merken. Hab das Script nur kopiert und bei meinem alten Webspace hats auch funktioniert, aber der neue macht Probleme.


zweitens: Du hast wohl die ' ' vergessen. So nimmt PHP an COMMENT wäre ein Konstanze statt wie du meinst ein String. Also mach ' (oder alternativ ", aber letzteres macht eigentlich auch niemand in diesem Fall) drum.

so?
<?PHP ECHO $_POST['COMMENT']; ?>

geht jedenfalls immer noch nicht:
<b>Notice</b>: Undefined index: COMMENT in <b>/www/usersites/s-x/underdark/pub/my_page/kontakt.php</b> on line <b>48</b>

Außerdem soll COMMENT kein string sein, sondern eine Variable. Im Fall, dass man vergisst ein Feld auszufüllen, soll man beim zurück nicht nochmal alles ausfüllen müssen --> dh. der Wert der Variablen wird ins Feld geschrieben.

drunken monkey
11.02.2007, 19:16
Außerdem soll COMMENT kein string sein, sondern eine Variable. Im Fall, dass man vergisst ein Feld auszufüllen, soll man beim zurück nicht nochmal alles ausfüllen müssen --> dh. der Wert der Variablen wird ins Feld geschrieben.
Wie wird denn die Site aufgerufen? Mit "....foo.php?COMMENT=Hallo"?

underdark
11.02.2007, 19:21
Wie wird denn die Site aufgerufen? Mit "....foo.php?COMMENT=Hallo"?

Seitenaufruf erfolgt ganz normal. Ohne ".php?...." . Ich würd gern vermeiden, da was anzuhängen.

drunken monkey
11.02.2007, 19:31
Seitenaufruf erfolgt ganz normal. Ohne ".php?...." . Ich würd gern vermeiden, da was anzuhängen.
Ahso, sorry, habe übersehen, dass du ja $_POST benutzt. <___<'' Tut mir leid.

Aber dafür hier die Lösung:

<td><input type="text" name="NAME" size="35"
value="<?php if (isset ($_POST['NAME']))
echo $_POST['NAME']; ?>" /></td>
Und ich würde NAME, COMMENT, etc. auch klein schreiben, aber ist natürlich Geschmackssache. ^^'

underdark
11.02.2007, 19:57
Thanx, das hat geholfen!

Manni
11.02.2007, 20:30
Wie die Fehlermeldung bereits sagt, liegt es daran, dass das Array $_POST keinen Eintragswert mit dem Index "COMMENT" enthält. Die Variante ohne die einfachen Anführungszeichen ist in PHP zwar möglich, allerdings ziemlich schlechter Stil. Das funktioniert spätestens dann nicht mehr, wenn der Index Leerzeichen enthält.

Tessio
25.02.2007, 16:34
Hi.
Das name-Attribut ist für (X)HTML ja nicht mehr zulässig.
Jetzt wollte ich mein Kontaktformular dementsprechend umschreiben, doch irgendwie ist die Übermittlung nicht so, wie sie bei name wäre. ^^
Ich habe hier ein

<input type="hidden" value="check" id="do" />

Das wird per Post übermittelt, dann wird gecheckt

if ($_POST['do'] == "check") {
echo 'Soll gecheckt werden.';
}

Aber das funktioniert so nicht.
Wenn ich aber im obigen Teil name="do" schreibe, funktionuckelt es.
Wie wäre die korrekte Überprüfung für das id-Attribut?

mitaki
25.02.2007, 16:39
Bei input-, textarea- und select-Elementen ist das name-Attribut noch immer erlaubt. Ist bei input[type=radio] sogar notwendig um sie richtig benutzen zu können.
Das vergeben einer ID ist wegen des label-Elements natürlich dennoch sinnvoll ;)

Manni
25.02.2007, 16:41
Natürlich ist das name-Attribut für Formualrelemente auch in XHTML erlaubt. Nur für andere Elemente (Bilder, Links usw.) nicht mehr.

Tessio
25.02.2007, 16:47
Nagh. Danke. ^^

Lucleonhart
26.02.2007, 12:22
Probleeeem! ^^

Habe ein Bild geladen, das google maps like per drag&drop verschoben werden kann. Damit der IE das nicht als dragsource nimmt, brauche ich die EventHandler
ondragstart="return false;" onselectstart="return false;"Jedenfalls nach meinem Kenntnisstand.

Diese zwei sind aber nicht valid... Gibt es eine Möglichkeit dem abzuhelfen? :)

drunken monkey
26.02.2007, 13:20
Diese zwei sind aber nicht valid... Gibt es eine Möglichkeit dem abzuhelfen? :)
Conditional Comments? http://www.multimediaxis.de/images/smilies/old/1/nixweiss.gif

Lucleonhart
27.02.2007, 08:03
Die Idee kam mir auch schon.. aber ich kann die ja schlecht in den img tag hineinbauen...
aktuell:
<img id='mainmap_im' name='mainmap_im' usemap='#mainmap' src="#" OnMouseDown="drag = true; return(false);" OnMouseUp="drag = false; return(false);" alt="" ondragstart="return false;" onselectstart="return false;"Jetzt mosert der validator wegen den beiden event handlern.

Wenn ich nun daraus
<img id='mainmap_im' name='mainmap_im' usemap='#mainmap' src="#" OnMouseDown="drag = true; return(false);" OnMouseUp="drag = false; return(false);" alt="" <!--[if IE]>ondragstart="return false;" onselectstart="return false;"<![endif]-->> mache, dann mosert er, weil dem img tag das ende fehlt. (Ist ja da, aber halt erst nach dem kommentar, daher.. putt! ^^)

drunken monkey
27.02.2007, 11:23
Wenn ich nun daraus
<img id='mainmap_im' name='mainmap_im' usemap='#mainmap' src="#" OnMouseDown="drag = true; return(false);" OnMouseUp="drag = false; return(false);" alt="" <!--[if IE]>ondragstart="return false;" onselectstart="return false;"<![endif]-->> mache, dann mosert er, weil dem img tag das ende fehlt. (Ist ja da, aber halt erst nach dem kommentar, daher.. putt! ^^)
Ahso, das wusste ich nicht. ^^'
Aber gut, bleiben wir bei CCs: das für IE abgeänderte Bild komplett in einem Conditional Comment, und draußen nochmal das normale für alle anderen Browser, ohne die unnötigen EVenthandler. Dann im IE-spezifischen CSS (das man ohnehin fast immer braucht) dem Bild außerhalb des CC "display:none;" zuweisen. ^^

<!--[if IE]><style type = "text/css">
#mainmap_im
{
display:none;
}
</style><![endif]-->

...

<img id='mainmap_im' name='mainmap_im' usemap='#mainmap' src="#" OnMouseDown="drag = true; return(false);" OnMouseUp="drag = false; return(false);" alt="" />
<!--[if IE]><img id='mainmap_im_ie' name='mainmap_im' usemap='#mainmap' src="#" OnMouseDown="drag = true; return(false);" OnMouseUp="drag = false; return(false);" alt="" ondragstart="return false;" onselectstart="return false;" /><![endif]-->
Müsste doch eigentlich klappen, oder? Auch wenn's schon etwas kompliziert wird...o_O

NPC Fighter
27.02.2007, 14:52
Aber ein CC ändert doch nichts an der Validität einer Seite, oder habe ich was falsch verstanden? o.o

mitaki
27.02.2007, 15:10
Aber ein CC ändert doch nichts an der Validität einer Seite, oder habe ich was falsch verstanden? o.o
Nein, Conditional Comments verändern die Gültigkeit einer Seite nicht. Wohl aber nicht-existente Event-Handler wie ondragstart.

Das mit dem Bild ist wohl klar. Auch Kommentare sind eine Art Element, daher schließt es vermutlich das img-Element bevor es sich selbst schließt.

drunken monkey
27.02.2007, 15:15
Aber ein CC ändert doch nichts an der Validität einer Seite, oder habe ich was falsch verstanden? o.o
Naja, das Problem war ja, dass die beiden Eventhandler nicht valide sind. Da die jetzt für den Validator und richtige Browser auskommentiert sind, dürfte das Ganze valide sein. Die unvaliden Dinger für den IE sind nur in den Tags im CC drin. ^^

Pf, zu spät. <___<''

Lucleonhart
27.02.2007, 23:05
Wenn ich also die nicht validen eventhandler auskommentiere, bringt es mir trotzdem nichts?!
Argh.. und was nu? ^^
index.php und index_ie.php ?!? ;)

NPC Fighter
27.02.2007, 23:09
Wenn ich also die nicht validen eventhandler auskommentiere, bringt es mir trotzdem nichts?!
Argh.. und was nu? ^^
index.php und index_ie.php ?!? ;)

Ich würde da eher vorschlagen, du checkst mittels PHP den Browser und gibst dann den entsprechenden Code aus. Brauchst nicht gleich zwei Dateien für.

drunken monkey
28.02.2007, 00:22
Wenn ich also die nicht validen eventhandler auskommentiere, bringt es mir trotzdem nichts?!
Hä, wer hat denn das gesagt (außer NPC der sich das Ganze mal wieder schlecht durchgelesen hat. :p ;))? o_O
Nein, eigentlich bin ich nach wie vor überzeugt, dass mein Ansatz klappen müsste, falls du die ID im Javascript verwendest müsste da halt noch eine kleine Abfrage rein, um zu wissen, welche der beiden Elemente du nehmen sollst. Und eigentlich hat mir mitaki ja auch recht gegeben, wenn ich das nicht gnadenlos missinterpretiere. o_O
Oder hast du's probiert und es hat nicht geklappt? Alternativ kannst du mir auch den ganzen HTML- und JS-Code schicken, und ich probier's selbst. ^^'

Aber NPCs Ansatz sollte natürlich auch klappen, auch wenn's imo mehr Arbeit ist und man sich wieder mal auf Header verlassen muss.

mitaki
28.02.2007, 01:14
Zur Not schreibt man es eben einmal für Browser und einmal für nicht-Browser (alles gültige Kommentarbereiche):

<!--[if !IE]><!-->Browser<!--<![endif]-->
<!--[if IE]>IE<![endif]-->

Wobei ich HTML innerhalb von CCs nicht sehr gut finde. ich würde von Anfang an eine passende JS-Klasse schreiben, die das ganze in allen Browsern ermöglicht. Ist ja schließlich kein Problem, nur etwas Aufwand.

Lucleonhart
28.02.2007, 11:10
ich würde von Anfang an eine passende JS-Klasse schreiben, die das ganze in allen Browsern ermöglicht. Ist ja schließlich kein Problem, nur etwas Aufwand.Description please...
Luc is standing on the Schlauch! ^^

drunken monkey
28.02.2007, 11:25
Zur Not schreibt man es eben einmal für Browser und einmal für nicht-Browser (alles gültige Kommentarbereiche):

<!--[if !IE]><!-->Browser<!--<![endif]-->
<!--[if IE]>IE<![endif]-->
Ahja, stimmt. ^^ Natürlich noch besser, daran habe ich gar nicht gedacht...o_O'

Wobei ich HTML innerhalb von CCs nicht sehr gut finde. ich würde von Anfang an eine passende JS-Klasse schreiben, die das ganze in allen Browsern ermöglicht.
Naja, dann wiederum nur in allen Browsern, wo JS aktiviert ist. :-/ Und eine Fallback-Noscript-Lösung, die den Code für die Browser enthält, geht auch nicht immer, da man ja auch im IE JS abstellen kann (Oder? http://www.multimediaxis.de/images/smilies/old/1/gruebel.gif). <___<''

Also natürlich sind CCs nicht die schönste Lösung, aber immerhin komplett valide und zuverlässig. Und wenn das nicht gerade eine Diplomarbeit über Webseitenerstellung wird, sollten sie auch kein Problem darstellen. http://www.multimediaxis.de/images/smilies/old/szuck.gif

Edit: Ahso, OK...o_O''

Lucleonhart
28.02.2007, 12:46
Die seite ist sowieso JS only, da zuviele dynamische inhalte eingebunden sind. :D

mitaki
28.02.2007, 14:11
Description please...
Luc is standing on the Schlauch! ^^
Ich glaub da reden wir aneinander vorbei. Wollte lediglich anmerken, dass es möglich ist.


Naja, dann wiederum nur in allen Browsern, wo JS aktiviert ist. :-/
Sofern ich es nicht ganz falsch verstanden habe soll hier ja was gezogen und verschoben werden. So lange die Inhalte im Dokument sind, wo läge das Problem?


Und wenn das nicht gerade eine Diplomarbeit über Webseitenerstellung wird, sollten sie auch kein Problem darstellen.
Eigentlich sollte das Fehlen von CCs ein Problem darstellen, da man sonst keine gezielte Anpassung an veralteten Browser vornehmen kann.

Naja, ich lasse es wohl besser, über dynamische Inhalte zu reden...

Antares
04.03.2007, 03:30
Ehm, hat Funpic register_globals seit neuestem auf on? o__O
Oder war das schon immer so?

Squall2k
04.03.2007, 08:18
Hallo,

Das ist jetzt eine wirklich dämliche Frage, aber ich habe folgendes Problem:

Eine Website soll aus drei simplen Teilen bestehen: Einem Banner oben dran, einer Leiste links, wegen Menü und so und rechts neben der Leiste und unter dem Logo, dann möglichst mittig eine Art Fenster, um den Inhalt darzustellen.

Ich will das ohne Frames haben und jetzt kommt die dumme Frage:

Ich krieg neben der Tabelle, aus der das Menü besteht keine Weitere für das Inhaltsfenster hin. Es geht nur darunter und das sieht bescheiden aus. Wenn ich das alles in eine andere, größere Tabelle anordne, habe ich das Problem, dass das Menü, falls das Textfenster ein wenig länger sein soll, nach unten rutscht.

Wie man bereits an der Fragestellung erkennt, benutze ich nen WYSIWYG-Editor. Genauergesagt: NVU.

Bluescreen
04.03.2007, 10:45
Hallo!
Ich kämpfe schon immer mit den MySQL Abfragen.

Soweit klappt es immer:

$User = "Benutzername";
$Pw = "Passwort";
$Db = "Datenbankname";

$link = mysql_connect( "localhost", $User, $Pw);

mysql_select_db($Db, $link);

Aber das mit dem

$Abfrage = "INSERT INTO Tabelle(...)"

kapier ich nicht.
Kann mir jemand erklären, wie ich in eine Tabelle einer MySQL Datenbank Daten eintrage, die von mhreren $_REQUEST['Forumlarelement'] kommen?

Das haut bei mir einfach nicht hin, ein dazu passendes Tut hab ich im WWW noch nicht gefunden!

NPC Fighter
04.03.2007, 11:15
Was ist dein Problem?


<?php
$cmd = "INSERT INTO `tabelle` (`lustigesfeld`, `nocheins`, `undnocheins`) VALUES ('feldeinsinhalt', 'feldzweiinhalt', 'usw')";
$do = mysql_query($cmd);
?>

Speichert ins Feld "lustigesfeld" der Tabelle "tabelle" den Inhalt "feldeinsinhalt", in "nocheins" "feldzweiinhalt" und so weiter.
Die REQUESTs kannst du im Endeffekt wie jede Variable in den String einarbeiten.

Bluescreen
04.03.2007, 11:41
Es will aber nicht hinhauen!

So hab ich's gemacht:

//Beginn
$SQL = "INSERT INTO kalender (Betreff, Autor, Text, URL, Eintragedatum, IconURL, Attribut, Datum) VALUES ('$_REQUEST['Betreff']','$Autor','$_REQUEST['Text']','$_REQUEST['URL']','$_REQUEST['Eintragedatum']','$_REQUEST['IconURL']','$_REQUEST['Attribut']','$Datum','NOW('')')";
//Ende

Das Feld ID ist auto_increment, wie muss ich damit umgehen?

http://de.geocities.com/welt_der_skripte/XAMPP/mysql_tabelle04.03.07.gif

Der zurückgegebene Fehler war:
parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Programme\xampp\htdocs\JuRa\Kalender\neu2.php on line 225

NPC Fighter
04.03.2007, 11:56
Die ID kannst du überspringen, wenn du sie nicht explizit festlegen willst. Sie erhöht sich dann automatisch.

Zu deinem Query: Du musst die REQUESTs vom Rest schon trennen.


<?php
$sql = "INSERT INTO `kalender` (`Betreff`, `Autor`, `Text`, `URL`, `Eintragedatum`, `IconURL`, `Attribut`, `Datum`) VALUES ('".$_REQUEST['Betreff']."', '$Autor', '".$_REQUEST['Text']."', '".$_REQUEST['URL']."', '".$_REQUEST['Eintragedatum']."', '".$_REQUEST['IconURL']."', '".$_REQUEST['Attribut']."', '$Datum', '".time()."')";
echo $sql;
?>

Schau dir hier einfach mal die Ausgabe an, um zu prüfen, ob der Query so dasteht, wie du dir das vorgestellt hast. Dann kannst du das Teil mit mysql_query an die Datenbank senden.

Bluescreen
04.03.2007, 14:05
@NPC F.
Bin dem Erfolg schon wesentlich näher gekommen, es haut aber noch nicht ganz hin:

Wenn ich mir $SQL ausgeben lasse, steht da:

INSERT INTO kalender ('Betreff', 'Autor', 'Text', 'URL', 'Eintragedatum', 'IconURL', 'Attribut', 'Datum') VALUES ('Term1', 'x', 'sjekfjklyfjkl', 'http://www.x.de', '', 'http://', '', '', '1173013339')

Meine Syntax:

$DatabasePointer=mysql_connect("localhost", $Benutzer);

mysql_select_db("bluescreenpage", $DatabasePointer) or die ("Konnte nicht mit DB verbinden.");

$SQL = "INSERT INTO kalender ('Betreff', 'Autor', 'Text', 'URL', 'Eintragedatum', 'IconURL', 'Attribut', 'Datum') VALUES ('".$_REQUEST['Betreff']."', '$Autor', '".$_REQUEST['Text']."', '".$_REQUEST['URL']."', '".$_REQUEST['Eintragedatum']."', '".$_REQUEST['IconURL']."', '".$_REQUEST['Attribut']."', '$Datum', '".time()."')";
//echo $SQL;

mysql_db_query($Datenbank,$SQL,$DatabasePointer) or die("Konnte nicht eintragen. Fehler:<br> ".mysql_error() );
mysql_close();
}


Wo ligt der Fehler? Ich danke für deine Gedulige Hilfe!

Edit:
Ich glaube ich habe eine mögliche Fehlerquelle gefunden - wie kann man den für die MSQL-Syntax gefährliche Zeichen entfernen? Antwort: mysql_escape_string($Variable)

Edit 2:
Das Datum scheint definitiv ein Falschs Format zu haben (1173013810) - wie muss man das aufbereiten, damit das in die DB eingetragen werden kann?

rgb
04.03.2007, 16:03
@Bluescreen:
Wandel am besten einfach das datum-feld in ein Integerfeld um. Dann kannst du es so abspeichern.
Ausgeben kannst du das dann mit

echo date("d.m.Y",$row['datum']);So hier mein Problem:
Ich habe 2 Arrays, in einem sind dateiname, in dem anderen sind werte für diese dateien, pro dateiname ist ein wert in dem anderen array, jetzt frage ich mich wie ich es bewerkstelligt bekomme, dass beide gleichzeitig ausgegeben werden können.
Die Dateinamen kann ich Problemlos ausgeben:
(Smarty Template Code)


{foreach from=$dateinamen item=dateiname}
<option value="{$dateiname}" class="...">{$dateiname}</option>
{/foreach}
Aber wie gebe ich die Werte aus dem anderen Feld nacheinander an das class="..." weiter?

mitaki
04.03.2007, 19:10
Ich krieg neben der Tabelle, aus der das Menü besteht keine Weitere für das Inhaltsfenster hin. Es geht nur darunter und das sieht bescheiden aus. Wenn ich das alles in eine andere, größere Tabelle anordne, habe ich das Problem, dass das Menü, falls das Textfenster ein wenig länger sein soll, nach unten rutscht.
Navigationsverweise sollte man idealerweise innerhalb von Listen festhalten, Tabellarisch ist diese information nicht.
Schau, ob dein WYSI-Dings Das Navigationselement link (oder rechts, wo du es halt haben willst) floaten (schweben oder fließen, je nach Übersetzung) lassen kannst.

Auch wenn dich das folgende vielleicht etwas niederdrücken wird: Ich kann nur empfehlen, sich mit HTML und CSS direkt außeinanderzusetzen. Der Code, der von WYSIWYG-Editoren produziert wird nie die Qualität von handgearbeitetem Code erreichen. Darüberhinaus verleiten sie, Elemente, die eigentlich zur Strukturierung dienen für die Gestaltung zu missbrauchen (z.B. die Navigation in einer Tabelle..).


Antwort: mysql_escape_string($Variable)
Diese Funktion ist veraltet. mysql_real_escape_string() eignet sich da am besten.


Das Datum scheint definitiv ein Falschs Format zu haben (1173013810) - wie muss man das aufbereiten, damit das in die DB eingetragen werden kann?
MySQL kennt z.B. Felder vom Typ DATETIME, dabei entspricht der Inhalt immer dem Format YYYY-MM-DD HH-MM-SS. Wenn ein Datenbanksystem Felder dieser Art kennt ist es aus Performancegründen sinnvoll, diese auch zu verwenden ;)


Aber wie gebe ich die Werte aus dem anderen Feld nacheinander an das class="..." weiter?
Du hast zwei Arrays. Wenn diese zueinander zugehörige Daten enthalten müsstest du sie ja auch bereits vor der Ausgabe mit Smarty zusammenlegen können (spricht: zu einem Array zusammenfügen). Wenn du dann nur noch ein Array hast, soltle es kein Problem mehr sein. Allerdings kenne ich Smarty selbst nicht sehr gut.

rgb
05.03.2007, 00:06
Du hast zwei Arrays. Wenn diese zueinander zugehörige Daten enthalten müsstest du sie ja auch bereits vor der Ausgabe mit Smarty zusammenlegen können (spricht: zu einem Array zusammenfügen). Wenn du dann nur noch ein Array hast, soltle es kein Problem mehr sein. Allerdings kenne ich Smarty selbst nicht sehr gut.
Joa leider wusste ich einfach nicht wie ich die zusammenfügen sollte, und vor allem das ganze dann später wieder auseinander pflücken sollte.
Deswegen habe ich es jetzt einfach so gelöst, dass nur die Dateien angezeigt werden, die noch nicht in der mysql Tabelle sind:


$inlist = array();
foreach($files as $file) {
if(!in_array($file, $rows)) {
$inlist[] = $file;
}
}

Drakes
07.03.2007, 16:44
Wie kann ich im CSS PHP verwenden? Einlinken tu ichs so:

<link rel="stylesheet" media="screen,projection"
title="Standard" href="stylesheets/css1.php"
type="application/x-httpd-php" />
Es funktioniert nicht, an was liegt es? Verwende ich einen falschen MIME-Typ oder geht das gar nicht was ich will?

mitaki
07.03.2007, 21:39
PHP in einer CSS Datei ist kein Problem. Die Dateiendung der Datei muss halt eine sein, die der Webserver als PHP-Dater erkennt. Das sollte bei .php der Falls ein.

Zum link-Element. Das muss dennoch den CSS-MIME-Typ enthalten!

<link rel="stylesheet" media="screen,projection"
title="Standard" href="stylesheets/css1.php"
type="text/css" />

Davon abgesehen, muss die Datei aucvh als text/css versendet werden, weil sie sonst von Browsern ignoriert werden muss. Am Anfang der Datei muss also ein

header('content-type: text/css');
stehen.

Da PHP den bitte-nicht-cachen-Header automatisch sendet, sollte eine dynamische Bearbeitung des ganzen auch keine Probleme verursachen.

Wenn das nicht hilft, musst du eine genauere Fehlerbeschreibung herausrücken!

Drakes
08.03.2007, 16:51
Klapt Super. Danke.:)

Bluescreen
08.03.2007, 17:37
MySQL kennt z.B. Felder vom Typ DATETIME, dabei entspricht der Inhalt immer dem Format YYYY-MM-DD HH-MM-SS. Ist es nicht YYYY-MM-DD HH:MM:SS?
So steht's zumindest im phpMyAdmin-Panel.


Wenn ein Datenbanksystem Felder dieser Art kennt ist es aus Performancegründen sinnvoll, diese auch zu verwenden ;)Sehe ich genauso.

Es funktioniert aber IMMER noch nicht. Meine SQL-Eintrag-Syntax, nach jedem Komma der VALUES habe ich aus lesbarkeits-Gründen einen Zeilenumbruch eingefügt:

$SQL = "INSERT INTO kalender ('Betreff', 'Autor', 'Text', 'URL', 'IconURL', 'Attribut', 'Datum') VALUES ('".$_REQUEST['Betreff']."',
'$Autor',
'".$_REQUEST['Text']."',
'".$_REQUEST['URL']."',
'$Icon',
'$attribut',
'$Datum')";


Die Ausgabe der $SQL Variable:

INSERT INTO kalender ('Betreff', 'Autor', 'Text', 'URL', 'IconURL', 'Attribut', 'Datum') VALUES ('Term1', 'x', 'aersjkt drhlgwr', 'http://www.x.de', '03', 'normal', '2007-03-14 00-00-00')

Bild vom ...myadmin:
http://de.geocities.com/welt_der_skripte/XAMPP/mysql08.03.07.gif

Wo liegt das verdammte Problem?

Edit: Mit HH:MM:SS gehts auch nicht:

[...] VALUES ('Term1', 'x', 'aersjkt drhlgwr', 'http://www.x.de', '03', 'normal', '2007-03-14 00:00:00')

Edit 2:Sehe ich es aber richtig, dass ich AUTO_INCREMENT & ON UPDATE CURRENT_TIMESTAMP Felder nicht in der EintragsSyntax erwähnen muss?

NPC Fighter
08.03.2007, 18:27
Was ist denn? Kommt ne Fehlermeldung, oder was?

Drakes
08.03.2007, 18:29
Bei den Spaltennamen nicht in einfache Anführungszeichen stellen, wenn schon denn schon `, ` und ' sind nicht das gleiche. ` verhindert das eine PHP-reserviertes Wort nicht als solches erkannt wird. Zudem solltest du `id`auch übergeben bei den VALUES einfach NULL hinschreiben ohne irgendwas.(aber du hast glaub schon recht, muss nicht sein)
Hat bei mir mit einfachen Anführungszeichen bei den Spaltennamen auch nicht geklappt, bei den VALUES gehören sie aber hin.

drunken monkey
09.03.2007, 14:41
INSERT INTO kalender ('Betreff', 'Autor', 'Text', 'URL', 'IconURL', 'Attribut', 'Datum') VALUES ('Term1', 'x', 'aersjkt drhlgwr', 'http://www.x.de', '03', 'normal', '2007-03-14 00-00-00')
Ich denke, der Fehler ist einfach, dass du versuchst einen String in ein Datumsfeld einzufügen. Probiere mal statt
'2007-03-14 00-00-00'
das hier:
DATE('2007-03-14 00-00-00')
^^

Edit 2:Sehe ich es aber richtig, dass ich AUTO_INCREMENT & ON UPDATE CURRENT_TIMESTAMP Felder nicht in der EintragsSyntax erwähnen muss?
Ich mach's immer so, dass ich's zwar vorne erwähne aber nachher eine Null reinschreibe. Also:

INSERT INTO `table` (`id`, `name`) VALUES (NULL, 'Ibsd');

Bluescreen
13.03.2007, 17:32
Ähm, abgesehen davon, das das andere noch nicht funktioniert:


Wie kann man die Azahl des eines Monats per PHP rausfinden?
Wie kann man (per PHP) herausfinden, ob ein Tag ein Samstag bzw. Sonntag ist?


Danke!^^

Mog
13.03.2007, 17:40
Ähm, abgesehen davon, das das andere noch nicht funktioniert:


Wie kann man die Azahl des eines Monats per PHP rausfinden?
Wie kann man (per PHP) herausfinden, ob ein Tag ein Samstag bzw. Sonntag ist?


Danke!^^

http://de3.php.net/manual/en/ref.datetime.php
gmdate, time

Bluescreen
13.03.2007, 17:44
Ja, ich weiß, aber das hab ich schon ausprobiert.
Kannst du mal ein Beispiel bringen?

Mog
13.03.2007, 17:55
Ja, ich weiß, aber das hab ich schon ausprobiert.
Kannst du mal ein Beispiel bringen?

http://de3.php.net/manual/de/function.date.php
Hier ist eine Liste. Da suchst du dir raus, wie du den aktuellen Tag ermittelst. Wenn ich das noch richtig in Erinnerung habe, dann war das "D". Das setzt du in die Funktion gmdate als ersten parameter ein, und als zweiten einen unix-stimestamp, den du per time bekommst. Die Funktion gibt dann [Mon, ..., Sun] zurück.

<?
$stamp = time();
$day = gmdate ( "D", $stamp);
echo $day;
?>

mitaki
13.03.2007, 18:13
Ja, ich weiß, aber das hab ich schon ausprobiert.
Was hast du probiert? Ich sehe keine Versuchsbeispiele. Was genau funktioniert denn nicht?


<?
Bitte nur allgemein gültigen Code als Beispiel schreiben. <? wird nicht bei jeder PHP-Konfiguration als PHP-Einleitung erkannt. Nur <?php wird bei jeder Konfiguration als Einleitung eines PHP-Codeabschnitts erkannt.

Nebenbei verwendet date() immer den aktuellen Timestamp, wenn der zweite Parameter nicht gegeben ist.

Mog
13.03.2007, 19:19
Was hast du probiert? Ich sehe keine Versuchsbeispiele. Was genau funktioniert denn nicht?


Bitte nur allgemein gültigen Code als Beispiel schreiben. <? wird nicht bei jeder PHP-Konfiguration als PHP-Einleitung erkannt. Nur <?php wird bei jeder Konfiguration als Einleitung eines PHP-Codeabschnitts erkannt.

Nebenbei verwendet date() immer den aktuellen Timestamp, wenn der zweite Parameter nicht gegeben ist.

Ich habe date() mit Absicht eingesetzt, da hier nirgends steht, das es sich um den momentanen Zeitpunkt handeln soll. ;) Wer so ein Beispiel braucht hat allgemein wenig Ahnung und will nur einen Codefetzen, den man wo einsetzen kann.



*Kopfkratzt* Aber, es ist interessant das sich jemand über einen hingeworfenen Codefetzen "aufregt", den man in jedem anderen Forum nicht einmal gepostet hätte. ;p

mitaki
13.03.2007, 19:32
Ich habe date() mit Absicht eingesetzt, da hier nirgends steht, das es sich um den momentanen Zeitpunkt handeln soll.
Hatte ich auch nicht angenommen.


Wer so ein Beispiel braucht hat allgemein wenig Ahnung und will nur einen Codefetzen, den man wo einsetzen kann.
Was mir allgemein nicht sehr schmeckt, leider habe aber auch ich nicht die Zeit, alles zu erklären.


*Kopfkratzt* Aber, es ist interessant das sich jemand über einen hingeworfenen Codefetzen "aufregt", den man in jedem anderen Forum nicht einmal gepostet hätte. ;p
Du kennst mich halt nicht. Mitaki-Neuling :p
Dabei hab ich noch nichtmal erwähnt, dass einfache Anführungszeichen besser wären als doppelte.

Mog
13.03.2007, 21:00
Was mir allgemein nicht sehr schmeckt, leider habe aber auch ich nicht die Zeit, alles zu erklären.

Naja, wer schon PHP scriptet .... ^^"




Du kennst mich halt nicht. Mitaki-Neuling :p
Dabei hab ich noch nichtmal erwähnt, dass einfache Anführungszeichen besser wären als doppelte.

Als C-Programmierer bedeuten für mich strcmp("", '\0') == true und die Funktion will einen String. Alles andere kommt für mich einem Fehler gleich. Wie gesagt: Ich bin C/Cpp/D-Coder. Und Python, und, und ... naja, den üblichen Shice. :p Darum ist für mich klar, das ein String ein null terminiertes Array ist. ' ' terminiert nicht. PHP macht da aber keinen Unterschied, glaube ich. Dast sind zumindes intern sowieso alles variants.

mitaki
13.03.2007, 21:14
Ich muss zugeben, kein C(pp)/D-Programmierer zu sein. PHP macht aber schon Unterschiede zwischen Strings in " und Strings in '.

Wie damit intern Umgegangen wird, und ob das im date()-Fall weniger sinnvoll ist als bei anderen Funktionen kann ich dagegen nicht sagen.

Bluescreen
18.03.2007, 19:08
Ich hab ja leider nicht die totale Ahnung von CSS,
wollte mit diesem Halbwissen nun aber eine "Leiste" rechts oben ins HTML-Dokument machen, was auch gut geklappt hat - ausser beim IE.
Der macht die Leiste imemr nur so breit, wie der Text drin ist. Bilder:

1. Bild Firefox, 2. Bild MS IE:
http://de.geocities.com/welt_der_skripte/navi_prob18.03.07_ff.gif http://de.geocities.com/welt_der_skripte/navi_prob18.03.07_ie.gif

CSS von der Leiste, die per DIV-Tag definiert ist:

#Navigation {
background-image: url(navi_bg.gif);
background-color: #336;
position: absolute;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
background-color: #339;
padding: 2px 1px 1px 1px;
margin: 0px;
color: #fff;
height: 20px;
background-repeat: repeat-x;
}

Was muss ich modifizieren, damit das auch der IE blickt? (Mit width:100% wurde nichts draus, der Firefox zeigt die Scrolleiste an, beim IE fehlt immer noch ein fitzelchen bis zum Ende)

Blakkeight
18.03.2007, 19:28
Ich denke mal du hast zuviel Definiert. ;)

So sieht es bei mir aus und klappt auch ueberall, soweit ich das getestet habe.

div#navigation{
background-color: #d6ab68;
margin: 0; padding: 0.5em;
}

Das sollte nun bei dir gehen. ;)


#Navigation {
background-image: url(navi_bg.gif);
background-color: #336;
margin: 0px; padding: 2px 1px 1px 1px;
color: #fff;
height: 20px;
background-repeat: repeat-x;
}

mitaki
18.03.2007, 19:33
Zunächst hast du einen Fehler des IE gefunden: Dieser kann die Breite (oder auch die Höhe) eines absolut positionierten Elements nicht berechnen, wenn für zwei gegenüberliegende Seiten Angaben gemacht wurden. Das Ergebnis siehst du ja.

Dass width: 100%; bei dir nicht den gewünschten Effekt erzielt liegt daran, dass du auch padding angegeben hast, im Endeffekt kommt also mehr als 100% raus (standardkonformer Modus angenommen). Wenn du dem absolut positionierten Element nur die Breitw zuweist und innerhalb des Elements ein weiteres Element mit den padding-Angaben setzt müsste sich der Scrollbalkenfehler beheben lassen. Dann sollte das ganze auch im IE funktionieren.

Bluescreen
18.03.2007, 19:36
Nein, klappt noch nicht.
Das ganze breitet sich zwar weit aus, allerdings hat es jetzt einen unschönen Abstand zu den Ecken genommen:
http://de.geocities.com/welt_der_skripte/leiste.gif

Der muss noch eliminiert werden!

Edit: mitakis Post kam grad' erst - bitte noch mit weiterer Antwort warten!

Edit 2:
Äh, Ok, aber was soll ich jetzt ändern, damit's klappt?

NPC Fighter
18.03.2007, 19:39
Den Abstand kriegst du mit einem


html {
padding: 0px;
margin: 0px;
}

body {
padding: 0px;
margin: 0px;
}

Eintrag in der CSS Datei in den Griff.

mitaki
18.03.2007, 19:47
Äh, Ok, aber was soll ich jetzt ändern, damit's klappt?
Steht im zweiten Absatz.

@NPC: html und body kannst auch kombinieren (html, body {}) ;)

Bluescreen
18.03.2007, 19:52
Ah, Ok, na so geht's auch.

Ich hab's jetzt nur BODY zugewiesen, dass scheint auch zu reichen.

Danke an Alle!

NPC Fighter
18.03.2007, 20:42
Ich hab's jetzt nur BODY zugewiesen, dass scheint auch zu reichen.

Hast dus mal in Opera probiert?

Bluescreen
18.03.2007, 20:47
Äh, ja, es geht dort auch.

Version 9.10.

Wieso?

mitaki
18.03.2007, 21:01
Opera verhält sich was html bzw. body in Verbindung mit margin bzw. padding angeht etwas anders als IE und Fx. Opera verwendet padding statt margin.

Ich selbst setze aber für html und body immer beides Null.

Tessio
19.03.2007, 08:58
Ja, ich wollte ein Formular bzw mehrere Abteilungen eines Formulars in verschiedenen Fieldsets unterbringen und habe als Backgroundimage des Fieldsets nen schönen Verlauf genommen.
Beim Firefox siehts auch wie gewünscht aus, nur der IE meint dem Legend-Element ebenfalls diesen Background zuzuweisen, also geht der Background noch gute 5-8 Pixel über den oberen Rand des Fieldsets.
Sieht scheiße aus.
Nun habe ich das Bild weg gelassen und nur eine Farbe als Hintergrund definiert, was im IE ebenfalls gute 5-8 Pixel zu weit oben ansetzt.
Hab schon versucht, über CSS dem Legend-Element keinen Background zuzuweisen, aber trotzdem schnallt dieser dümmliche IE nicht, dass ich da keinen Background haben will.
Zur Veranschaulichung :

Im dümmlichen IE (http://npshare.de/files/35/2776/duemmlicher_ie.gif).
Im rocking Firefox (http://npshare.de/files/35/6697/rocking_fx.gif).

CSS :

fieldset {
background-color: #ffffff;
background-image: url('layout/verlauf_1.gif');
background-repeat: repeat-x;
padding-left: 10px;
padding-right: 10px;
}

legend {
font-size: 12px;
font-family: Tahoma;
font-weight: bold;
color: #651011;
background: transparent;
}

textarea, input {
display: block;
background-color: #fff;
border: 1px #a3a3a3 solid;
margin-bottom: 10px;
}

HTML :

<form id="kommentarformular" method="post" action="index.php?site=comment">
<fieldset>
<legend>Formular</legend>
<p><label for="name">Ihr Name* :</label><input type="text" id="name" name="name" /></p>
<p><label for="email">E-Mail Adresse :</label><input type="text" id="email" name="email" /></p>
<p><label for="text">Nachricht* :</label>
<textarea id="text" name="text" rows="10" cols="67"></textarea></p>
</fieldset>
<fieldset>
[...]
</fieldset>
</form>

mitaki
19.03.2007, 12:30
Ein nerviger Fehler, der auch in Version 7 noch enthalten ist. Und wiedermal machts nur der IE falsch.

Es gibt aber einen Workaround (http://www.mattheerema.com/archive/getting-fieldset-backgrounds-and-legends-to-behave-in-ie) (en).

Im Gegensatz zur empfohlenen Variante, rate ich aber zu einem extra Stylesheet für den IE, damit sparst du dir unnötige hackerei.

Tessio
19.03.2007, 13:34
Wunderbar, so hab ichs mit CC geschafft. ^_^
Und schon das nächste IE Problem.
Meine Navigation besteht als einer Liste.
Beim Mouseover von den Listenlinks werden diese mit einer grauen Hintergrundfarbe hinterlegt, die Links werden mit display: block; angezeigt, damit sich der Link über das ganze Element erstreckt (funktioniert zwar im IE nicht, aber netter Effekt für vernünftige Browser).
Nun geht alles prima in allen Browsern, außer dem IE.
Dort werden die Listenpunkte mit großem Abstand getrennt.
Wieder Screenshots :

Im Firefox. (http://npshare.de/files/35/3519/brafx.gif)
Im IE. (http://npshare.de/files/35/6824/braie.gif)

HTML :

<div id="navigation">
<h2>Main</h2>
<ul>
<li><a href="index.php">News</a></li>
<li><a href="index.php?site=steckbrief">Steckbrief</a></li>
<li><a href="http://blog.rpg-generation.com">Blog</a></li>
<li><a href="index.php?site=some_links">Some Links</a></li>
<li><a href="index.php?site=kontakt">Kontakt</a></li>
<li><a href="index.php?site=impressum">Impressum</a></li>
</ul>
<h2>Projekte</h2>
<ul>
<li><a href="index.php?site=gamers_teahouse">Gamer's Teahouse</a></li>
<li><a href="index.php?site=jewelia_world">Jewelia World</a></li>
<li><a href="index.php?site=princess_zelda">Princess Zelda</a></li>
<li><a href="index.php?site=rpg_generation">RPG Generation</a></li>
<li><a href="index.php?site=sv_mardorf">SV Mardorf v1927 eV</a></li>
</ul>
<img src="layout/navend.gif" alt="" />
</div>
Ja, ich weiss, ich hätte das auch mit mehreren Listen ineinander machen können, aber so habe ich das erst gar nicht für den IE hin bekommen, vielleicht versuch ichs später nochmal.

CSS :

#navigation {
font-size: 12px;
font-family: Tahoma;
color: #651011;
width: 143px;
float:left;
text-align: center;
background-color: #e8e7e7;
background-image: url('layout/navbg.gif');
background-repeat: repeat-y;
}

#navigation h2 {
font-size: 12px;
font-weight: bold;
font-family: Tahoma;
color: #ffffff;
width: 141px;
text-align: center;
margin-bottom: 6px;
margin-top: 3px;
margin-left: 1px;
margin-right: 1px;
border-top: 1px #c1c1c1 solid;
border-bottom: 1px #c1c1c1 solid;
background-image: url('layout/navcapbg.gif');
background-repeat: repeat-y;
}

#navigation ul {
list-style-type: none;
width: 141px;
margin: 0 auto;
margin-bottom: 15px;
padding: 0;
}

#navigation ul li {
font-weight: normal;
color: #651011;
text-align: left;
margin: 0;
padding: 0;
}

#navigation a:link, #navigation a:visited {
padding-left: 8px;
font-size: 12px;
font-family: Tahoma;
text-decoration: none;
color: #651011;
display: block;
}

#navigation a:active, #navigation a:hover {
padding-left: 8px;
font-size: 12px;
font-family: Tahoma;
text-decoration: none;
color: #651011;
background-color: #ececec;
display: block;
}

Auch hier steck ich wieder in ner Schaffenskrise. ._.

mitaki
19.03.2007, 13:49
Das ist ein klassischer Internet-Explorer-6-Fehler.

Du musst dem a-Element noch eine Breite oder Höhe zuweisen, dadurch erhält das Element Layout (das Konzept zur Elementdarstellung im IE, damit lassen sich viele Dinge beeinflussen).

Im Internet Explorer 7 ist der Fehler inzwischen behoben.

Unabhänig davon würde ich für die Listenpunkte eine größere Zeilenhöhe (line-height) definieren, z.B. 1.5em, damit man das ganze besser lesen kann. Nebenbei sieht es dann auch nicht so zusammengequetscht aus.

Nebenbei noch zum a-Element in der Stildatei. Wenn du Angaben für a definierst gelten diese auch für a:*, d.h. es reicht aus, wenn du abweichende Definitionen innerhalb von a:hover usw. angibst.

NPC Fighter
24.03.2007, 16:56
Kennt jemand eine Seite mit Beispieldatenbanken für MySQL? Bräuchte mal zum rumexperimentieren ein paar gut gefüllte. :)

Antares
25.03.2007, 17:51
So, ich hab mal weider eine Frage:

Ich hätte gerne den Timestamp des aktuellen Tages um 0.00 Uhr.

Hab mir folgendes überlegt



<?php

$thetime3 = date("d.m.Y");
$thetime = mktime($thetime3);
$thetime5 = date("d.m.Y - H:i",$thetime);
echo $thetime5;

?>


Erst wird das aktuelle Datum per date errechnet und anschließend per mktime zurück in einen Timestamp berechnet. Da allerdings die Uhrzeit fehlt dürfte doch eigentlich 0.00 Uhr herauskommen.

Klappt allerdings nicht. $thetime5 ist immer einige Stunden im Vorraus, wenn ich H:i weglasse ist sie genau einen Tag vorraus.
Theoretisch könnte ich von dieser variable dann den timestamp für einen Tag abziehen, aber es erscheint mir doch sehr umständlich.

Gehts denn einfacher?

Lucleonhart
26.03.2007, 06:37
Wie wäre es so:

<?php

$zerohour = mktime(0,0,0, date("m"), date("d") , date("Y"));

$testtime = date("d.m.Y - H:i",$zerohour);
echo $testtime;

?>

Antares
26.03.2007, 18:08
Jaa wunderbar, danke :D

rgb
27.03.2007, 18:05
$artikelresult = mysql_query("SELECT * FROM rdn_artikel LEFT JOIN rdn_artikelkategorien ON rdn_artikel.kategorie = rdn_artikelkategorien.id LEFT JOIN rdn_mitglieder ON rdn_artikel.userid = rdn_mitglieder.id");


Hi, ich hab Probleme mit diesem Code. Und zwar besteht mein Problem darin, dass sich der query nicht die Daten aus rdn_mitglieder zieht. Aus rdn_kategorien zieht er sich allerdings die Daten. Ich gebe das ganze testweise mit print_r() aus und heraus kommt folgendes:


[0] => Array
(
[0] => 1
[id] =>
[1] => 9
[userid] => 9
[2] => test
[titel] => test
[3] => 0
[datum] => 0
[4] => 2
[kategorie] => 2
[5] => intervieinhalttest
[inhalt] => intervieinhalttest
[6] => 1
[active] => 1
[7] => 2
[8] => Interviews
[katname] => Interviews
[9] => Interviews mit Personen aus der Rpg-Maker Szene
[katbeschreibung] => Interviews mit Personen aus der Rpg-Maker Szene
[10] =>
[username] =>
[11] =>
[passwort] =>
[12] =>
[level] =>
[13] =>
[email] =>
[14] =>
[geburtstag] =>
[15] =>
[forum_name] =>
[16] =>
[beruf] =>
[17] =>
[wohnort] =>
[18] =>
[geschlecht] =>
[19] =>
[hobbys] =>
[20] =>
[icq] =>
[21] =>
[homepage] =>
[22] =>
[reg_datum] =>
[23] =>
)
Er zieht sich zwar die Tabellenfelder in den array, aber der Inhalt fehlt.
Weiterhin verstehe ich auch nicht, warum alles doppelt im Array steht, einmal mit Zahl und einmal mit nennung des Feldnamen ô_o (was auch seltsamerweise nicht bei allen Feldern so ist)

mitaki
27.03.2007, 18:17
Das Problem liegt vermutlich an einer der IDs (rdn_artikel.userid, rdn_mitglieder.id). Kannst du die Feldinhalte dieser Spalten überprüfen?


Weiterhin verstehe ich auch nicht, warum alles doppelt im Array steht, einmal mit Zahl und einmal mit nennung des Feldnamen ô_o (was auch seltsamerweise nicht bei allen Feldern so ist)
Letzteres nur bei Feld 7 wie es aussieht.

Verwendest du mysql_fetch_array()? Die Funktion vereint mysql_fetch_row() (numerisches Array) und mysql_fetch_assoc() (assoziatives Array), weshalb man sich aus Performancegründen eine der letzten beiden aussuchen sollte [ich empfehle mysql_fetch_row(), weil man dann weniger Probleme hat, wenn sich die Feldnamen ändern oder man MySQL-Funktionen verwendet].

rgb
27.03.2007, 22:25
So. Es funktioniert jetzt. Es lag tatsächlich an den IDs, ich war davon überzeugt, dass das Script die richtige auswählt beim Eintragen des Datensatzes.

Wegen dem mysql_fetch_etc werde ich mich mal informieren.

Achja, es wäre schlau statt SELECT * FROM ... lieber die einzelnen felder die ich brauch beim * einzutragen, weil wenn das array immer so groß ist, dauert das Laden der Seite doch länger oder?

Da bauen sich auf einer Seite meistens auch mehr als 5 Arrays auf.
Edit: Ich hab das jetzt einfach mal gemacht.

mitaki
27.03.2007, 22:45
Achja, es wäre schlau statt SELECT * FROM ... lieber die einzelnen felder die ich brauch beim * einzutragen, weil wenn das array immer so groß ist, dauert das Laden der Seite doch länger oder?
Es ist besser, nur die benötigten Felder zu wählen, weil dadurch nicht die gesamte Datenbank abgefragt werden muss (=> Performance plus).
Auch wird das Script schneller ausgeführt, wenn das Array nicht doppelt belegt werden muss (Überflüssiges sollte man immer vermeiden, weil es eine Fehlerquelle ist).
Vieleicht nicht merklich, bei einer Abfrage, aber wenn du mehrere Abfragen hast, kann sich das schon summieren.

rgb
27.03.2007, 22:48
Aber ich frage mich ja auch, warum das doppelt belegt ist.
Bei den vorherigen Arrays wo ich sowas angewendet habe war das imo auch nicht so.

mitaki
27.03.2007, 23:03
Aber ich frage mich ja auch, warum das doppelt belegt ist.
Bei den vorherigen Arrays wo ich sowas angewendet habe war das imo auch nicht so.
Eventuell hast du es nur nicht bemerkt, weil du die eine oder andere Methode für selbstverständlich erachtet und eben entsprechend angewendet hast.

Verwendest du denn die mysql_fetch_array-Funktion? Dann ist es klar. Wenn nicht, welche dann?

rgb
27.03.2007, 23:17
Achso, ja ich habe sie verwendet, aber ich nehme jetzt fetch_assoc und es ist so wie es sein soll.
Ich hatte aus deiner ersten Antwort irgendwie nicht klar herausgelesen dass das damit zusammen hängt ich dachte du schreibst das nur so als tipp...-_-'

Tessio
30.03.2007, 01:56
Jau, ich würdes gerne so haben, dass man nach versenden der Formulardaten per POST-Variante besagte nicht mehr mit Browser Zürück-Button abschicken kann.
Und jetzt kommt ihr... denn ich muss euch was sagen.. ich habe keinen Blassen, wie. :D

Blakkeight
30.03.2007, 16:53
Tagchen, hab mal nach langer weile/zeit ne frage, hab grad meine Seite auf XHTML umgestellt. Nun wird mir aber gesagt: 403 Forbidden You don't have permission to access / on this server.
Die Datei heißt index.xhtml, benenne ich sie in index.html um geht die Seite wieder.
Ist alles nur XHTML und CSS.

Hier mal der XHTML Code, der ist sogar valide. ;O


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
<title>brueggex.de</title>
</head>
<body>
<div id="main">
<div id="header">
<h1 id="title">brueggex.de</h1>
</div>
<ul id="navi">
<li>&laquo; <a href="XXX">XXX</a> &raquo;</li>
</ul>
</div>
<div id="footer">
<h2 id="copy">&laquo; &copy; brueggex.de 2006 &raquo;</h2>
<p><a href="http://validator.w3.org/check?uri=referer">Valid XHTML 1.0 Strict</a></p>
</div>
</body>
</html>

drunken monkey
30.03.2007, 17:55
Tagchen, hab mal nach langer weile/zeit ne frage, hab grad meine Seite auf XHTML umgestellt. Nun wird mir aber gesagt: 403 Forbidden You don't have permission to access / on this server.
Die Datei heißt index.xhtml, benenne ich sie in index.html um geht die Seite wieder.
Also amCode kann's erstmal grundsätzlich nicht liegen. Es scheint mir eher so, als wäre der Webserver nicht drauf konfiguriert, "index.xhtml" als Default anzuzeigen.
Falls du Zugang zur Konfiguration des Webservers hast, müsste da irgendwo eine Option sein (unter Apache: "DirectoryIndex"), wo eine Liste "index.html index.htm index.php ..." steht, da fügst du einfach "index.xhtml" hinzu, dann klappt's. ;) Mit einer ".htaccess"-Datei könnte es auch gehen, dann mpsstest halt die genaue Option so rauskriegen.
Alternativ kannst du natürlich auch direkt auf "..../index.xhtml" verweisen, statt auf ".../", aber wenn die bereits vorher draußen war, und du jetzt Links oder Bookmarks ändern müsstest, ist's natürlich blöd.

Die letzte mir einfallende Möglichkeit wäre eine "index.html", die nur eine Weiterleitung beinhaltet, möglicherweise mitsamt einem Hinweis, dass diese Adresse veraltet ist, und man die neue bookmarken soll, oder so.

Die Warnung kommt jedenfalls daher, dass der Webserver keine der Default-Index-Dateien findet, und daher die Verzeichnisstruktur anzeigen müsste - was man natürlich meistens verbietet.

Blakkeight
30.03.2007, 19:06
Gut ich glaube dann muss ich mal beim Betreiber anfragen, mal gucken was der so sagt. ;)

Danke schon mal fuer die Hilfe.

Bluescreen
01.04.2007, 11:52
Hallo, ich bin's mal wieder!

Und zwar mit folgendem Problem:

Ich würde per PHP gerne eine Datei erstellen:

$fp = fopen ( "dateiname.php", 'w');

Das Klappt ja. Nunw ürde ich aber gerne in diese Datei informationen so aus einem Formular speichern, dass ich sie auch wieder aus der Datei mit PHP lesen kann.

Wie wann z.B. ein Benutzer in das Formularfeld "Name" den Wert "Bluescreen" einträgt, der dann in einer Datei gespeichert wird und später bspw. über die Variable $Benutzername verwendet werden kann.

Edit:
Quatsch, das da oben ist ja zum Datei lesen, ich meinte zum erstellen natürlich

touch("dateiname.endung");

NPC Fighter
01.04.2007, 11:58
Wenn du sie so auslesen willst, würde ich das mit einer einfachen .ini Datei machen. Mit parse_ini_file() (http://de3.php.net/manual/de/function.parse-ini-file.php) kannst du den Inhalt nämlich bequem auslesen.

Bluescreen
01.04.2007, 12:04
Gut, das ist ne Möglichkeit.

Die INI-Datei sieht dan z.B. so aus:


;Benutzerinformationen:
[Benutzerdaten]
Name = Bluescreen
Passwort = Geheim

Aber wie kann ich dann genau auf diese Informationen zugreifen?
Das hat doch was mit einem Array zu tun, oder?

Blakkeight
01.04.2007, 12:06
du kannst doch auch $name = Benutzername schreiben und die Datei dann Includen?!

Bluescreen
01.04.2007, 12:08
Stimmt. Geht das dann auch mit den \" Anführungszeichen?

Ah, Ok, das geht. Mich würdedas mit den INI-Dateien aber trotzdem interressieren...

mitaki
01.04.2007, 12:25
Ah, Ok, das geht. Mich würdedas mit den INI-Dateien aber trotzdem interressieren...

Nicht umsonst hat NPC die Funktion als Verweis zum Hanbuch erstellt.


[Benutzerdaten]
Name = Bluescreen
Passwort = Geheim

$daten = parse_ini_file('test.ini'); ergibt:
$daten['Name'] und $daten['Passwort'].

parse_ini_file('test.ini',true); ergibt:
$daten['Benutzerdaten']['Name'] und $daten['Benutzerdaten']['Passwort'].

NPC Fighter
01.04.2007, 12:32
Naja, wenn du zum Beispiel eine Ini Datei hast, in der


[1]
name = NPC Fighter
website = http://havefuninthe.net/

[2]
name = Bill Gates
website = http://microsoft.com/

[3]
name = Angela Merkel
website = http://bund.de/

steht, könntest du zum Beispiel alle mit


<?php
$inifile = parse_ini_file("users.ini", TRUE);

foreach($inifile as $id)
{
echo "<a href=\"".$id["website"]."\">".$id["name"]."</a><br />";
}
?>

ausgeben. Nur so als Anstoß.


Edit: Narf, Taki. D:
Edit2: Am besten achtest du auch noch drauf, dass nicht Hinz und Kunz die Datei ansehen kann.

Blakkeight
01.04.2007, 13:00
Muss mich auch noch mal mit ner Frage einreihen. ;D

Hatte ja das Problem das meine Domain nicht automatisch auf eine .xhtml Datei Weitergeleitet werden kann.
Der Betreiber meinte ich muss mir ein Forward Script machen und dann Umleiten.
Hab ich gemacht, nun will aber der IE6 die Datei Downloaden und kann sie nicht anzeigen. -.-
Kann man das irgend wie umgehen?

Und warum kann PHP keine .xhtml Dateien Includen? Es wird dann nichts angezeigt wenn man die Seite aufruft.

mitaki
01.04.2007, 13:06
Der Internet Explorer versteht kein echtes XHTML. Das hat auch zur Folge, dass der den XHTML MediaType application/xhtml+xml nicht kennt und ihn downloaden will.

Als Lektüre empfehle ich dir Schneegans' XHTML-Einmaleins (http://schneegans.de/web/xhtml/).

Nachtrag: Es gibt aber einen Trick (http://www.w3.org/MarkUp/2004/xhtml-faq#ie), wie der Internet Explorer XHTML als XML parst, wenn man den MediaType application/xml verwendet. Das hat aber nur den Vorteil, dass auf Wohlgeformtheit geprüft wird. Es hat mehr Nachteile, da der IE in diesem Fall die DTD herunterlädt und XML darüberhinaus nicht inkrementell anzeigen kann (wie Opera glaub ich und Mozilla seit neuestem).


Und warum kann PHP keine .xhtml Dateien Includen? Es wird dann nichts angezeigt wenn man die Seite aufruft.
Da vermute ich das Problem im Skrip und nicht in der XHTML-Datei.

Blakkeight
01.04.2007, 13:31
Da vermute ich das Problem im Skrip und nicht in der XHTML-Datei.
Was ist daran falsch?:

<?
include("test.xhtml");
?>
Wenn ich .html draus mache geht es ja wieder. ;)


Als Lektüre empfehle ich dir Schneegans' XHTML-Einmaleins.
Hatte ich schon mal gelesen aber scheinbar nicht vollstaendig. xD
Jetzt geht alles auch im IE6 und Includieren klappt auch.
Ich habe einfach UTF-8 vergessen

<meta http-equiv="content-type" content="application/xhtml+xml;charset=utf-8" />
und den Header in:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns='http://www.w3.org/1999/xhtml'>
geaendert. =D

Danke mitaki. ;)

mitaki
01.04.2007, 13:41
Schön, dass es nun funktioniert, aber noch ein Hinweis:

Was ist daran falsch?:
<? ist von der PHP-Konfiguration abhängig. Bei mir werden Blöcke die mit <? beginnen nicht geparst. Konfigurationsunabhängig ist nur <?php.

Blakkeight
01.04.2007, 13:50
Joa muss ich noch aendern. =D Hab mich ueber die Jahre an das <? das es mir schwer faellt <?php zu nehmen, sieht irgend wie so nervig aus. xD

Bluescreen
01.04.2007, 20:11
Ich hab mal eine ganz andere Frage:

Ich hab lange versucht, sowas selbst zu basteln, aber ich hab einfach keine Zeit mehr, um das ganze endlich mal fertig zu stellen. Deswegen:

Kennt jemand eine Art kostenloser Forum-Maker, den ich auf Funpic.de benutzen kann? Damit ich dann dort ein Forum haben kann, was einfach zu bedienen und verwalten ist?

Ich bin mir sicher, das ihr sowas kennt!

Lucleonhart
01.04.2007, 20:30
Kostenlosen Forum Maker!?

Meinst du sowas wie

Woltlab Burning Board (http://www.woltlab.de/products/burning_board_lite/index.php)
phpbb (http://www.phpbb.de/)
Simple Machines (http://www.simplemachines.org)?! ^^

Teelicht
06.04.2007, 15:16
Was heißt eigentlich "weiterverabeiten"? Mit der Option "No derivate works" in der CCL ist eine "Weiterverarbeitung" verboten, aber ab wann gilt ein Bild oder eine Musikdatei als weiterverarbeitet? Wenn ich ein Bild in ein anderes Format konvertiere - ist es dann bearbeitet? Wenn ich es unverändert in ein Pages-Dokument (oder von mir aus Word-Dokument) einbaue, wenn ich es unverändert in ein anderes Bild einbaue, wenn ich seine Bildgröße ändere, wenn ich es leicht transformiere - was davon ist nun eine Weiterverabeitung?

Ich frag so doof, weil ich durch den Comic der CCL (http://creativecommons.org/about/licenses/comics3) (3. Bild) verunsichert bin: Maya hat das Bild im Beispiel nur um ein paar Grad gedreht und in eine Collage eingebaut - und das gilt dort bereits als "weiterverarbeitet"!? Oder hab ich nicht richtig hingeschaut? So gut ist es nicht zu erkennen...

Crash-Override
06.04.2007, 17:23
mhm umwandeln wird wohl noch drin sein solange du nicht grade bmp -> jpg quali 1% umwandelst ist da ja kaum ein Unterschied. Ist wohl ein Grenzfall, im Zweifelsfall nachfragen.

Blakkeight
07.04.2007, 11:55
Kann es sein, das wenn man XHTML nutzt, der Webspace rum spinnen tut?
Nutze ja zurzeit XHTML, und er will nur Sporadisch und Schleppend Links laden.

mitaki
07.04.2007, 19:22
Die von dir genannten Probleme können nicht durch XHTML verursacht werden.

Blakkeight
08.04.2007, 04:23
Die von dir genannten Probleme können nicht durch XHTML verursacht werden.
Okey, Danke. =D

Blakkeight
09.04.2007, 17:40
Ohhohh gefaehrlich, dobbelbosd! xD

Ich hab da mal ne frage zu CSS und <fieldset> + <legend>.

Wenn ich <fieldset> mit CSS Formatiere und eine Background Farbe mache, sieht ja noch alles jute aus. ;)

Wenn ich dann aber das Element <legend> hinzufuege, kommt im !€ nur soße bei raus. Soll heißen, ueber dem <legend> Element bildet sich nun die Background Farbe vom <fieldset> Element weiter aus, ueber die gestrichelte Linie. ;) Was nicht zum Design passt und scheiße aussieht.

Hier mal die Klassen wie ich die beiden Elemente Formatiert habe. ;)


.fieldset{
border: 1px dashed #876625;
background-color: #e1d2b5;
margin: 1em auto; padding: 1em;
}
.legend{
font: bold 10pt Verdana;
margin: 0; padding: 0.5em;
}

Hier noch ein Bild wie es im !€ aussieht:
Bild von Fieldset+Legend (http://upload.npcfighter.de/files/36/721fieldset%2Blegend.png)

Aso, die frage hab ich ganz vergessen, wie kann ich obiges im !€ vermeiden ohne es Komplikationen bei anderen Browsern gibt!

e:
So und gleich noch ne frage Hinterher.

Kann es moeglich sein das die:


*{
color: #000000;
font: normal 7pt Verdana;
margin: 0; padding: 0;
}
body{
background-color: #e2c890;
margin: 0; padding: 1em;
}
beiden sich gegenseitig in die quere kommen?
Denn eigentlich soll ja * alle Elemente Formatieren, macht er aber nicht. -.-
Wenn ich body nach oben setze, geht zwar die Formatierung von * aber body wird ignoriert. -.-
Gibt es da ne Loesung fuer?

Tessio
09.04.2007, 17:48
Schau mal da ab Post #143. (http://multimediaxis.de/showthread.php?t=91104&page=8)

Blakkeight
09.04.2007, 18:03
Ok aber nun ist immer noch hinter dem Text was <legend> ausgibt eine gestrichelte Linie. -.- Die muss auch noch weg.
Im Opera sieht es auch Komisch aus, da ist jetzt der <legend> Text unter der Gestrichelten Linie. ;(

Bluescreen
16.04.2007, 17:31
Guten Nachmittag!

Wie bzw. woher bekommt man eigentlich solche Text-Formatierungs-Hilfen für die eigene Website:
http://de.geocities.com/welt_der_skripte/texteingabehilfen_apr07.gif

ich denke, ihr wisst was ich meine!^^

Gibt es sowas irgendwo zum downloaden?

FF
16.04.2007, 17:58
öh, lad dir phpbb oder eine andere Forensoftware, und such die stelle da im quellcode, copier das, fertig.

das dürfte aber mit JS recht leicht zu lösen sein, denk ich.
Dauert nur lange, wenn du das selbst schreiben musst.
Insofern ist o.g. Lösung ne ganz gute denk ich.

Blakkeight
16.04.2007, 18:50
Vlt hilft das: tutorials.de (http://www.tutorials.de/forum/javascript-tutorials/24357-html-js-rich-editing-mit-contenteditable.html)
oder hier:
google.de (http://www.google.de/search?q=WYSIWYG+Javascript+Tutorial&spell=1)

Bluescreen
18.04.2007, 15:30
Also, tutorials.de hilft hier schonmal nicht weiter, da:
Gleich mal ein Wort vorneweg: Die hier beschriebenen Methoden funktionieren in der vorliegenden Form nicht mit Mozilla-Browsern. Nur MSIE-Benutzer ab Versionsnummer 5.5 kommen in den Genuss dieses Features.

Na, dann werd' ich mich mal auf die Suche machen...

Tessio
18.04.2007, 20:25
Obwohl man dann in Frage stellen müsste, ob dieses "Feature" dann auch das richtige für deinen Einsatz wäre, wenn es nur für IE >= 5.5 verfügbar ist...

FF
19.04.2007, 15:30
wo ist bitte das problem, phpBB ist open source, wenn du ein wenig html kannst, und einen texteditor mit suchfunktion besitzt, kannst du den teil aus dem original phpbb source kopieren.
das ist dann garantiert genau das was du willst.>_>

Bluescreen
23.04.2007, 07:02
Nun, gut, ich dachte eigentlich einfach nur, ich könnte euch mal' fragen, vielleicht habt ihr ein paar persöhnliche Tipps. Ein solcher Formator per Java wäre auch nicht schlecht gewesen.

Egal, nun zu einem anderen Problem:

Auf meiner Website tritt ein JS-Problem auf, das der Firefox folgendermaßen beschreibt:
http://de.geocities.com/welt_der_skripte/problem23.04.07.png

Der Script-Container:

<script type="text/javascript"><!--
function kat1(objKat){
var objFirst = document.getElementById("navigation").getElementsByTagName("li")[0];
var objKat = objKat.parentNode;

// Alle Menuepunkte der obersten Navigationsebene durchlaufen
while(objFirst){
// Falls es sich um ein LI-Tag handelt, nichtt aber um die aktive Kategorie
if((objFirst.nodeName.toLowerCase()=="li") && (objFirst!=objKat)){
objFirst.getElementsByTagName("ul")[0].className = "toggleOff";
}
// Nächstes Element auf gleicher Ebene holen
objFirst = objFirst.nextSibling;
}

// Aktives Element anhand des aktuellen Zustandes ein- bzw. ausblenden
with(objKat.getElementsByTagName("ul")[0])
className = (className=="toggleOn")?"toggleOff":"toggleOn";
}
//--></script>

Sollte das Problem so nicht zu finden sein, das ganze Dokument:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><title>Ferienendversion: 25.02.07 - Version 0.2.3.1 - Schema 2</title>
<meta name="author" content="Erik T.">
<meta name="fileversion" content="0.2.3.1">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta http-equiv="content-script-type" content="text/javascript">
<meta http-equiv="content-language" content="de">
<style type="text/css">

.untergrnormal, .normaleinfach, .gruppenormal {
background-color:#55C;
color: #fff;
font: bold 0.94em sans-serif;
text-decoration: none;
display:block;
padding: 3px 10px;
border: 1px solid #05b;
margin: 0;
width: 165px;
-moz-border-radius:5px;
/* border-radius:5px; */
}

.normaleinfach {
background-color:#65C;
}

.untergrnormal {
background-color:#5252B5;
/* background: #ccc; */
}

.untergruppeaus {
display:none;
}

/* Klassen zum Ein- bzw. Ausblenden der Unterkategorien */
.toggleOff{ display: none; }
.toggleOn{ display: block; }


#navigation LI {
background-color: transparent;
padding: 0;
margin: 0;
list-style: none;
width: 165px;
}

#navigation UL {
background-color: transparent;
padding: 0;
margin: 0;
}

#navigation A:link, #navigation A:visited {
border: 1px solid #333399;
}

#navigation A:hover, #navigation A:focus {
border: 1px solid #c7c88d;
}

#maincontent {
background-color: #e3e0c6;
padding: 1em;
border-left: 1px solid #002c88;
margin: 0 0 0 210px;
color: #000;
position: absolute;
top: 0px;
left: 0px;
}

</style>

<script type="text/javascript"><!--
function kat1(objKat){
var objFirst = document.getElementById("navigation").getElementsByTagName("li")[0];
var objKat = objKat.parentNode;

// Alle Menuepunkte der obersten Navigationsebene durchlaufen
while(objFirst){
// Falls es sich um ein LI-Tag handelt, nichtt aber um die aktive Kategorie
if((objFirst.nodeName.toLowerCase()=="li") && (objFirst!=objKat)){
objFirst.getElementsByTagName("ul")[0].className = "toggleOff";
}
// Nächstes Element auf gleicher Ebene holen
objFirst = objFirst.nextSibling;
}

// Aktives Element anhand des aktuellen Zustandes ein- bzw. ausblenden
with(objKat.getElementsByTagName("ul")[0])
className = (className=="toggleOn")?"toggleOff":"toggleOn";
}
//--></script>

</head><body lang="de" style="color:#000;background-color:#339;">
<noscript>&nbsp;</noscript><noscript>
<p>Diese Seite benötigt JavaScript. Ihr Broswer interpretiert anscheinend aber kein JavaScript, oder sie haben die Interpretation abgeschaltet. <br>
Um den vollen Komfort dieser Website zu nutzen sollten sie dies wieder aktivieren, oder einen JavaScript-fähigen Broswer wie z.B. den kostenlosen <a href="http://www.mozilla-europe.org/de/" title="Zur Website des Mozilla Firefox gehen">Mozilla Firefox</a> zulegen.<br>
</p><p>Falls ihnen das alles nicht zusagt, können sie auch unsere <a href="#">Version ohne JavaScript</a> ansehen (NOCH IM BAU).
</p><p><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></p>
</noscript>
<div style="width:210px; position: absolute; top: 7px; left: 7px;">
<ul id="navigation" style="padding:0; margin:0;">
<li><a title="Kategorie 1" class="gruppenormal" id="gruppe1" onclick="kat1(this)" href="#">Kategorie 1</a>
<ul class="toggleOff">
<li><a title="Unterkategorie 1-1" class="untergrnormal" id="gruppe1a_0" href="#">&nbsp;&nbsp;&nbsp;Unterkategorie 1.1</a></li>
<li><a title="Unterkategorie 1-2" class="untergrnormal" id="gruppe1b_0" href="#">&nbsp;&nbsp;&nbsp;Unterkategorie 1.2</a></li>
<li><a title="Unterkategorie 1-3" class="untergrnormal" id="gruppe1c_0" href="#">&nbsp;&nbsp;&nbsp;Unterkategorie 1.3</a></li>
<li><a title="Unterkategorie 1-4" class="untergrnormal" id="gruppe1d_0" href="#">&nbsp;&nbsp;&nbsp;Unterkategorie 1.4</a></li>
<li style="visibility:hidden;" title="Platzhalter">&nbsp;</li>
</ul>
</li>
<li><a title="Kategorie 1" class="gruppenormal" id="gruppe2" onclick="kat1(this)" href="#">Kategorie 2</a>
<ul class="toggleOff">
<li><a title="Unterkategorie 1-1" class="untergrnormal" id="gruppe1a_1" href="#">&nbsp;&nbsp;&nbsp;Unterkategorie 1.1</a></li>
<li><a title="Unterkategorie 1-2" class="untergrnormal" id="gruppe1b_1" href="#">&nbsp;&nbsp;&nbsp;Unterkategorie 1.2</a></li>
<li><a title="Unterkategorie 1-3" class="untergrnormal" id="gruppe1c_1" href="#">&nbsp;&nbsp;&nbsp;Unterkategorie 1.3</a></li>
<li><a title="Unterkategorie 1-4" class="untergrnormal" id="gruppe1d_1" href="#">&nbsp;&nbsp;&nbsp;Unterkategorie 1.4</a></li>
<li style="visibility:hidden;" title="Platzhalter">&nbsp;</li>
</ul>
</li>
<li><a title="Kategorie 1" class="gruppenormal" id="gruppe3" onclick="kat1(this)" href="#">Kategorie 3</a>
<ul class="toggleOff">
<li><a title="Unterkategorie 1-1" class="untergrnormal" id="gruppe1a_2" href="#">&nbsp;&nbsp;&nbsp;Unterkategorie 1.1</a></li>
<li><a title="Unterkategorie 1-2" class="untergrnormal" id="gruppe1b_2" href="#">&nbsp;&nbsp;&nbsp;Unterkategorie 1.2</a></li>
<li><a title="Unterkategorie 1-3" class="untergrnormal" id="gruppe1c_2" href="#">&nbsp;&nbsp;&nbsp;Unterkategorie 1.3</a></li>
<li><a title="Unterkategorie 1-4" class="untergrnormal" id="gruppe1d_2" href="#">&nbsp;&nbsp;&nbsp;Unterkategorie 1.4</a></li>
<li style="visibility:hidden;" title="Platzhalter">&nbsp;</li>
</ul>
</li>
</ul>
</div>



<div id="maincontent">
<p>Version 0.2.<b>3</b>! - Aktuell seit 25.02.07 - 20:31 <b>Achtung:</b> Benötigt JavaScript, NOSCRIPT Container vorhanden.<br>
<!-- TEXT -->
</p></div>

</body></html>


Danke!

dead_orc
23.04.2007, 13:05
Um nochmal zu deiner "Formatierungshilfe" zu kommen: Willst du eigentlich einige Buttons die einfach die BB-Codes in das Feld einfügen oder einen WYSIWYG-Editor? Ersteres sollte sich zumindest als Basisversion auch selbst realisieren lassen, muss man sich nur n bisschen JS angucken, letzteres kann man sich auch fertig besorgen, z.B. FCKeditor (http://www.fckeditor.net/)

Crash-Override
23.04.2007, 14:45
[...]
var objKat = objKat.parentNode;
[...]

Ergibt ja auch wahnsinnig viel Sinn, denkst du nicht? Du greifst auf eine Eigenschaft eines Objektes zu, die du ihm selbst zuweist, was theroretisch ja ginge, allerdings erzeigst du das Objekt gerade erst, also kann die Eigenschaft nicht existieren.

Was du wohl meintest war:

var objKat = objFirst.parentNode;

oder?

edit: Ok, du hast es als Übergabeparameter, in dem Fall ist der Fehler noch trivialer. Nimm einfach einen anderen Namen oder lass das "var " davor weg.

Bluescreen
25.04.2007, 13:25
Um nochmal zu deiner "Formatierungshilfe" zu kommen: Willst du eigentlich einige Buttons die einfach die BB-Codes in das Feld einfügen oder einen WYSIWYG-Editor?EIgwentlich kam ich nur darauf, weil ich ein solches System ganz einfach umgesetzt habe. Da werden die Formatierungselemente, die man per Mauskick einfügt aber immer ans Ende im Textfeld gestellt. Deswegen wollte ich mal schauen, ob's da nicht noch bessere Versionen gibt...


edit: Ok, du hast es als Übergabeparameter, in dem Fall ist der Fehler noch trivialer. Nimm einfach einen anderen Namen oder lass das "var " davor weg.Natürich! :rolleyes:
Sowas kommt davon wenn man das Problem als viel kompizierter einschätzt, als es eigentlich ist! Danke nochmal!^^

dead_orc
25.04.2007, 20:19
EIgwentlich kam ich nur darauf, weil ich ein solches System ganz einfach umgesetzt habe. Da werden die Formatierungselemente, die man per Mauskick einfügt aber immer ans Ende im Textfeld gestellt. Deswegen wollte ich mal schauen, ob's da nicht noch bessere Versionen gibt...
Es gibt bessere Versionen, ziemlich sicher ;) Hier kann man ja z.B. auch Text markieren und dann als fett formatieren. Aber ein Script für sowas hab ich noch nich gesehen irgendwo (also als Download)

drunken monkey
25.04.2007, 22:00
Es gibt bessere Versionen, ziemlich sicher ;) Hier kann man ja z.B. auch Text markieren und dann als fett formatieren. Aber ein Script für sowas hab ich noch nich gesehen irgendwo (also als Download)
SelfHTML. (http://aktuell.de.selfhtml.org/artikel/javascript/bbcode/)
Mit Formatieren von markiertem Text und Einfügen an Cursorposition in praktisch allen Browsern.

mitaki
25.04.2007, 22:13
SelfHTML. (http://aktuell.de.selfhtml.org/artikel/javascript/bbcode/)
Mit Formatieren von markiertem Text und Einfügen an Cursorposition in praktisch allen Browsern.
Wobei man anmerken sollte, dass der Artikel geschrieben wurde, als es noch keinen Internet Explorer 6 (!) gab.

FF
26.04.2007, 14:46
na und, er funktioniert ja trotzdem (immer noch^^)

mitaki
26.04.2007, 15:01
Ich wollte damit nur sagen, dass man heute wohl nicht mehr so stark auf Browserspezifisches eingehen muss wie damals, weil man bessere Browserübergreifende Techniken verwenden kann (und da gabs von IE 5 auf IE 6 ja durchaus was neues).

Drakes
29.04.2007, 16:57
Wie kann man einen Button mit einem Bild darauf machen? Man kann im value ja kaum ein <img> Element einfügen.(Sollte man bei XHTML kein Javascript verwenden, da es nicht valide ist? Ich meine, weil es das Attribut onClick "nicht gibt".)

Crash-Override
29.04.2007, 17:32
<input type="image" src="z" width="x" height="y" alt="Submit" />

funktioniert bei mir, valide hab ich jetzt nicht getestet, sollte aber gehen, schätze ich.

Drakes
29.04.2007, 17:49
Leider nicht in XHTML width und height gehen nicht und da man weitergeleitet wird, geht es nicht für das was ich will. Ich will für mein Forum eben auch BBCodes machen. Ich mach es jetzt vorläufig einfach so:

<img src="images/a_background.png" width="149" height="29" onClick="insert('', '')" alt="Link einfügen" />
CSS:


img:hover {
cursor: pointer;
}

Und das insert ist das, auf welches drunken monkey verwiesen hat.

Edit: thx @drunken monkey , Crash-Override

drunken monkey
29.04.2007, 19:15
<button type = "button" onclick = "insert('', '');">
<img src = "images/a_background.png" width = "149" height = "29" alt = "Link einfügen" />
</button>
Ist valides und funktionierendes XHTML. Du hast dann allerdings den Button im Hintergrund.

Manni
30.04.2007, 08:35
<button type = "button" onclick = "insert('', '');">
<img src = "images/a_background.png" width = "149" height = "29" alt = "Link einfügen" />
</button>
Ist valides und funktionierendes XHTML. Du hast dann allerdings den Button im Hintergrund.

Den Button kann man allerdings über CSS ausblenden, in dem man einfach Rahmen und Hintergrundfarbe rausnimmt.

Bluescreen
04.05.2007, 16:49
Hallöchen, ich hab mal wieder ein Problem.
Und zwar möchte ich auf einer Seite mit einem klick auf ein Bild eine vergrößerte Version (davon) anzeigen lassen.

Der JavaScript Code, den ich derzeit verwende:
function schliessen() {
if (fenster == fenster.closed) { fenster.close(); }
}

function schliessen2() {
this.window.close();
}

function oeffnen(img,hoehe,breite) {

var fenster = window.open("", "","width=500,height=500,menubar=no,status=no,toolbar=no,dependet=yes,scrollbars=yes");
var text;
text = "<html><head><title>Bild ";
text += img;
text +="</title></head><body style='text-align:center;font-family:MS Sans Serif; font-size: 11px;color:#FFF;background-color:#339;'><img height='"
text += breite;
text +="' width='";
text += hoehe;
text +="' alt='Bild ";
text += img;
text +="'' src='";
text += img;
text += "'><br><a href='javascript:this.window.close();' title='Dieses Fenster schlie&szlig;en'>Fenster schließen</a></body></html>";

fenster.document.write(text);

fenster.focus();

} //Funtion Ende

Aufruf vom Bild:
<a href="#" onclick="oeffnen('schusa_bild1_b.jpg',450,600)"><img style="border: 0px;" src="schusa_bild1_s2.jpg" width="263" height="350" alt=""></a>


Wie lässt sich das auf die folgenden Punkte optimieren(?):
Es wird immer nur ein Fenster für die Bilder geöffnet; Klickt der User die Vorschau eines anderen an, geht kein neues auf, sondern es erscheint im alten (oder das alte wird vorher geschlossen)
Die Fensterabmessungen werden jedesmal einzeln übergeben, sodass jedes Fenster eine andere Breite bzw. Höhe haben kann
Firefox läd nach dem anzeigen des Fensters weiterhin (Ladegrafik aktiv). Was verurschacht das und wie kann man das beheben?
In der Statusleiste einen Hoverkommentar zum Bild

Drakes
05.05.2007, 09:32
Also, was mir zuerst auf fällt, ist wie du das Fenster mit einem Link öffnest. Anstatt
href="#" onclick="oeffnen('schusa_bild1_b.jpg',450,600)" könntest du
href="javascript: oeffnen('schusa_bild1_b.jpg',450,600)" verwenden, aber ich würde sowieso kein Element 'a' um das 'img' Element machen sondern einfach das Attribut 'onclick' in das 'img' Element verschieben, so wie es jetzt ist und dann das Element 'a' weglöschen

Wenn du schon die Höhe und die Breite extra übergibst, würde ich natürlich das nachher auch verwenden um das Fenster zu öffnen:
width=breite+50,height=hoehe+50
So etwas in diesem Stil, natürlich musst du dann noch schauen, ob das Fenster nicht zu gross wird.

Einen Hovereffekt zu machen, wäre natürlich am einfachsten mit dem Attribut 'title', aber wenn du einen Hovereffekt unbeding in der Statusleiste machen willst, kann ich dir nicht helfen "wegrenn"

Bluescreen
05.05.2007, 10:17
Ok, gut, werde ich mal modifizieren.
Das mit dem "A-Tag weglassen" ist ne gute Idee, ich hatte es aber dagelassen, das der Cursor zum Hand-Symbol wechselt, wenn man übers Bild fährt. Das signalisiert doch "Klick mich!". Aber das lässt sich ja auch anders realisieren.
Das mit der Statusleiste kann ich glaub ich auch selbst lösen (ein onmouseover und ein window.status sollten ausreichen).

Doch das Hauptproblem, das ich warscheinlich zu undeutlich beschrieben habe, ist, das jedes angeklickte Bild sich in einem neuen Fenster öffnet!
Lässt sich da was ändern?


Edit: Weiters Problem: Wie kann ich abhängig von der Auflösung des Benutzers (genauer: bei 800x600 px) einen extra Zeilenbruch anzeigen lassen?
Mit screen.width; kann ich ja die Fenster-Breite einlesen, aber wei kann ich an einer bestimmten Stelle im Dokument ein <br> einfügen lassen?

Teelicht
05.05.2007, 12:11
Edit: Weiters Problem: Wie kann ich abhängig von der Auflösung des Benutzers (genauer: bei 800x600 px) einen extra Zeilenbruch anzeigen lassen?
Mit screen.width; kann ich ja die Fenster-Breite einlesen, aber wei kann ich an einer bestimmten Stelle im Dokument ein <br> einfügen lassen?

Wie wärs mit document.write("<br />");? Das halt noch umrahmt mit einem if(screen.width==XXX) - aber was machst du eigentlich, wenn der Besucher JavaScript ausgeschaltet hat? Oder wenn das Browserfenster nicht maximiert ist? (Kommt häufiger vor als man vielleicht denkt, vor allem auf bestimmten Betriebssystemen)

Bluescreen
05.05.2007, 12:16
Wenn der Benutzer JS deaktiviert hat, kann ich ihm auch nicht helfen.
Die Anzeigeoptimierung ist dann halt' nicht für ihn verfügbar, das ändert nichts an der funktionalität der Website.

Das ganze fügt lediglich einen Zeilenumbruch ein, der dafür sorgt, das bei niedriger Auflösung der Text nicht leicht seltsam zwischen zwei Bildern hängt. Lesen kann man das ganze aber so oder so, es ist wiegesagt nur eine "Anzeigeoptimierung".

Und ganz ehrlich:
Eigentlich ist es nur um unseren Schulleiter zu beruhigen. Der hat JS garantiert nich deaktiviert, und wird sowieso nix merken.

Drakes
05.05.2007, 17:03
Versuch es doch mal damit:


<script type="text/javascript">
fenster= 0;

function oeffnen(img,hoehe,breite)
{
if(fenster!=0)
{
fenster.close();
}
fenster = window.open("", "","width=500,height=500,menubar=no,status=no,toolbar=no,dependet=yes,scrollbars=yes");
var text;
text = "<html><head><title>Bild ";
text += img;
text +="</title></head><body style='text-align:center;font-family:MS Sans Serif; font-size: 11px;color:#FFF;background-color:#339;'><img height='"
text += breite;
text +="' width='";
text += hoehe;
text +="' alt='Bild ";
text += img;
text +="'' src='";
text += img;
text += "'><br><a href='javascript:this.window.close();' title='Dieses Fenster schlie&szlig;en'>Fenster schließen</a></body></html>";
fenster.document.write(text);
fenster.focus();

}
</script>
Übrigens kannst du in der Error-Console schauen ob es valid ist, z.B. weiss ich nicht ob ich hier fenster trotzdem noch übergeben müsste, obwohl es global definiert ist.

Edit: btw. aber weisst du wahrscheinlich, dass was du willst: style="cursor: pointer;"

Bluescreen
06.05.2007, 20:00
OK, danke, ich werde das ganze mal dementsprechend modifizieren.

Und schon kommt schon ein weiteres Problem:
Ich suche kostenlose Landkarten, die ich im Internet veröffentlichen kann. Es geht dabei um unsere Schule. Ich braüchte davon eine Art Stadtplanauschnitt. Das muss natürlich rechtlich OK sein. Gibt es da kostenlose Dienste?

Antares
06.05.2007, 20:37
Hallo zusammen.
Kurze Frage:
Ich habe eine Kalender programmiert, jetzt will ich genau 3 Monate vorspringen (3 ist variabel)
In dem Fall betrifft es den 1. Februar 00:00 Uhr.
Wie könnt ich das angehen?

Manni
06.05.2007, 22:18
OK, danke, ich werde das ganze mal dementsprechend modifizieren.

Und schon kommt schon ein weiteres Problem:
Ich suche kostenlose Landkarten, die ich im Internet veröffentlichen kann. Es geht dabei um unsere Schule. Ich braüchte davon eine Art Stadtplanauschnitt. Das muss natürlich rechtlich OK sein. Gibt es da kostenlose Dienste?

Google Maps (http://maps.google.de/). Da kannst du dir einen Account einrichten, eine eigene Karte mit bestimmten Punkten erstelleun und dann auf diese Karte verlinken.


Hallo zusammen.
Kurze Frage:
Ich habe eine Kalender programmiert, jetzt will ich genau 3 Monate vorspringen (3 ist variabel)
In dem Fall betrifft es den 1. Februar 00:00 Uhr.
Wie könnt ich das angehen?


<?php
$month = date('m', $timestamp);
$month += 3;

if($month > 12) {
$year = date('Y', $timestamp) + 1;
$month %= 12;
} else {
$year = date('Y', $timestamp);
}

$day = date('d', $timestamp);
$hour = date('H', $timestamp);
$minute = date('i', $timestamp);
$second = date('s', $timestamp);

$new_timestamp = mktime($hour, $min, $sec, $month, $day, $year);
?>

So in etwa sollte das klappen. Ist aber nicht getestet.

Antares
07.05.2007, 15:13
Google Maps (http://maps.google.de/). Da kannst du dir einen Account einrichten, eine eigene Karte mit bestimmten Punkten erstelleun und dann auf diese Karte verlinken.




<?php
$month = date('m', $timestamp);
$month += 3;

if($month > 12) {
$year = date('Y', $timestamp) + 1;
$month %= 12;
} else {
$year = date('Y', $timestamp);
}

$day = date('d', $timestamp);
$hour = date('H', $timestamp);
$minute = date('i', $timestamp);
$second = date('s', $timestamp);

$new_timestamp = mktime($hour, $min, $sec, $month, $day, $year);
?>

So in etwa sollte das klappen. Ist aber nicht getestet.

Gut, danke.
Kann man den Code quasi mit einer Blätterfunktion verbinden, wenn ich beispielsweise nicht unbedingt 3 Monate zurück will, sondern 4, oder 5?
Oder wenn ich ganz einfach einige Monate vor will.
(Monate auswählen etc.)

drunken monkey
07.05.2007, 18:26
Kann man den Code quasi mit einer Blätterfunktion verbinden, wenn ich beispielsweise nicht unbedingt 3 Monate zurück will, sondern 4, oder 5?
Du änderst einfach die "3" in der dritten Zeile in was anderes ab, solange du nicht mehr als 12 Monate in die Zukunft springst, bleibt's gültig. Ansonsten statt dem hier:

if($month > 12) {
$year = date('Y', $timestamp) + 1;
$month %= 12;
} else {
$year = date('Y', $timestamp);
}
Das hier:

$year = date('Y', $timestamp);
while ($month > 12) {
$month -= 12;
++$year;
}

Manni
07.05.2007, 19:44
Du änderst einfach die "3" in der dritten Zeile in was anderes ab, solange du nicht mehr als 12 Monate in die Zukunft springst, bleibt's gültig. Ansonsten statt dem hier:

if($month > 12) {
$year = date('Y', $timestamp) + 1;
$month %= 12;
} else {
$year = date('Y', $timestamp);
}
Das hier:

$year = date('Y', $timestamp);
while ($month > 12) {
$month -= 12;
++$year;
}

Oder aber:

$year = date('Y', $timestamp) + floor($month / 12);
$month %= 12;
if($month < 0) {
$month += 12;
}

Wieder mal ungetestet. Hat allerdings den Vorteil, dass auch "negative" Monatssprünge möglich sind.

Bluescreen
09.05.2007, 18:29
Versuch es doch mal damit:

if(fenster!=0)
{
fenster.close();
}
Übrigens kannst du in der Error-Console schauen ob es valid ist, z.B. weiss ich nicht ob ich hier fenster trotzdem noch übergeben müsste, obwohl es global definiert ist.
Nein, das geht nicht. Der Wert für fenster bleibt doch nciht gespeichert. Dann ist immer "undefined", glaub ich zumindest. Auf jeden Fall klappt's nicht.
Muss da vielleicht was zurückgegeben werden?

Aktuell von mir verwendeter Code (http://de.geocities.com/welt_der_skripte/Fenster.js.txt)


Google Maps (http://maps.google.de/). Da kannst du dir einen Account einrichten, eine eigene Karte mit bestimmten Punkten erstelleun und dann auf diese Karte verlinken.Das ist schon mal ne' Idee, werd' ich sicher auch mit einbinden, aber ich bräuchte noch ne' andere Lösung.
Ich brauche sowas auch als Grafik auf der Website.

Drakes
09.05.2007, 18:57
Natürlich könnte man es so machen:

<script type="text/javascript">
fenster= 0;

function oeffnen(img,hoehe,breite,fenster)
{
if(fenster!=0)
{
fenster.close();
}
fenster = window.open("", "","width=500,height=500,menubar=no,status=no,toolbar=no,dependet=yes,scrollbars=yes");
var text;
text = "<html><head><title>Bild ";
text += img;
text +="</title></head><body style='text-align:center;font-family:MS Sans Serif; font-size: 11px;color:#FFF;background-color:#339;'><img height='"
text += breite;
text +="' width='";
text += hoehe;
text +="' alt='Bild ";
text += img;
text +="'' src='";
text += img;
text += "'><br><a href='javascript:this.window.close();' title='Dieses Fenster schlie&szlig;en'>Fenster schließen</a></body></html>";
fenster.document.write(text);
fenster.focus();
return fenster;
}
</script>

<img ..... onclick="fenster = oeffnen('img','hoehe','breite',fenster)" />
Ich geb zu, sie ist ziemlich umständlich, aber geht wahrscheinlich eher.

FF
09.05.2007, 19:59
Das ist schon mal ne' Idee, werd' ich sicher auch mit einbinden, aber ich bräuchte noch ne' andere Lösung.
Ich brauche sowas auch als Grafik auf der Website.
Afair kann man die auch direkt in die seite einbinden.
sonst mach halt nen screenshot von der googlemaps seite, und schneid das bild aus ô.O

Alexander Parr
09.05.2007, 22:44
Hallo alle zusammen,
ich habe auch nur eine kurze Frage, ich möchte ein Formular machen, mit welchem News eingetragen werden sollen d.h. Bilder und viel Text, um zu meinem eigentlichen Problem zu kommen.

Ich würde gerne 50 Archivbilder benutzen die man anklickt und dieses(angeklickte) dann gespeichert wird also übertragen wird sobald man den Submitbutton drückt. D.h. das man den Text schreibt, dann das Bild wählen kann und den Text fertig schreib und dann Submit drücken kann. Ich schätze das ,dass mit Javascript oder Ajax sicher machbar ist, bzw ich hoffe es ich kenn mich damit nicht so aus.
Danke Alex;)

Bluescreen
10.05.2007, 06:46
Hallo alle zusammen,
ich habe auch nur eine kurze Frage, ich möchte ein Formular machen, mit welchem News eingetragen werden sollen d.h. Bilder und viel Text, um zu meinem eigentlichen Problem zu kommen.
Kannst du selbst PHP? Dann wäre auf Webmaster Resource (http://www.webmaster-resource.de/tricks/php/news-management-system-mit-php-und-mysql-teil-1.php) vielleicht was für dich.



Ich würde gerne 50 Archivbilder benutzen die man anklickt und dieses(angeklickte) dann gespeichert wird also übertragen wird sobald man den Submitbutton drückt. D.h. das man den Text schreibt, dann das Bild wählen kann und den Text fertig schreib und dann Submit drücken kann. Ich schätze das ,dass mit Javascript oder Ajax sicher machbar ist, bzw ich hoffe es ich kenn mich damit nicht so aus.
Du meinst, das man da aus 50 Bildern ein paar auswählen kann, oder?

Alexander Parr
10.05.2007, 07:31
mit PHP umgehn kann ich denke ich,
ich meinte eigentlich nur 1 bild von alle dehnen wählen ohne das sich die Seite neu läd und es gespeichert wird bis zum Absenden des Formulars.

danke schon mal ich guck mir den Link gerade mal an http://www.multimediaxis.de/images/smilies/old/sm_12.gif

EDIT:
Das Newssystem und das steht soweit alles es geht eigentlich nur mit diese Funtkion mit den Bildern.

mitaki
10.05.2007, 11:41
ich meinte eigentlich nur 1 bild von alle dehnen wählen ohne das sich die Seite neu läd und es gespeichert wird bis zum Absenden des Formulars.
Das ist eigentlich einfach:

Du erstellst viele Radiobuttons, das funktioniert dann wie hier im Forum die Auswahl des Beitragssymbols.

<input type="radio" name="bild" value="1" />
<input type="radio" name="bild" value="2" />
Hier kannst du nur einen Button aktivieren, weil beide Buttons den Namen "bild" haben. Aber je nachdem, welchen du aktivierst, wird z.B. in einem PHP-Skript der Wert 1 oder 2 verarbeitet. Du könntest also für jedes Bild einen Wert festlegen und diesen dann auswerten lassen.

Alexander Parr
10.05.2007, 14:13
ok, danke
das habe ich mir auch überlegt mit einem radiobutton zu machen, ich dachte es gibt einen schönen Weg über JS aber trotzdem danke ;)

drunken monkey
10.05.2007, 15:28
ok, danke
das habe ich mir auch überlegt mit einem radiobutton zu machen, ich dachte es gibt einen schönen Weg über JS aber trotzdem danke ;)
Du könntest ein Eingabefeld vom Typ "hidden" nehmen und per JS den entsprechenden Pfad eintragen, wenn man auf ein Bild klickt.


<img src = "bild1.jpg" onclick = "document.getElementById('bild').setAttribute('value', 'bild1.jpg');" alt = "Beschreibung von Bild1" />

....

<form ...>
...
<input type = "hidden" value = "" name = "bild" id = "bild" />
</form>

mitaki
10.05.2007, 16:44
Ich sehe da zwei Probleme:


setAttribute() ist meines Erachtens nicht notwendig.

document.getElementById('bild').value = "wert";
.. sollte außreichen.
Da bei dem input-Element Name und ID identisch sind, wird das ganze in Opera und dem Internet Explorer nicht funktionieren.
Opera bis 9.2 (oder 9.5, aber nicht mehr in 10) macht den selben Fehler wie der Internet Explorer und sammelt mit getElementById() auch Elemente auf, die den angegebenen Wert als Namen tragen (böser Bug). Wenn ich mich richtig erinnere gibt die Funktion gar nichts zurück, wenn Name und ID eines Elements identisch sind.

Alexander Parr
10.05.2007, 22:30
hm ok danke danke...
ich versuche das mal alles was ihr mir schönes geschrieben habt und melde mich dann noch mal, wenn noch jemand was einfällt dann schreibts einfach *g....

danke soweit scho ma :)

http://www.multimediaxis.de/images/smilies/old/sm_12.gif http://www.multimediaxis.de/images/smilies/old/sm_12.gif
Alex

Alexander Parr
16.05.2007, 20:47
noch ne frage:
wie ich finde eine dummer allerdings weiß ich mir nicht zu helfen.



<?php
$var = "$xyz";
?>

klar so wir $var der Wert "$xyz" zugewießen aber genau das ist mein Problem wie kann ich das machen, das ich nicht $var den Wert "$xyz" zuweiße sondern den Wert von $xyz?

klar man könnte es so schreiben


<?php
$var = $xyz;
?>

doch kann ich es nicht so schreiben da $xyz als string angesehen wird also als Text. Also irgendwie total verwirrent.
aufjeden fall wenn ich



<?php
echo $var;
?>


schreibe kommt nur $xya raus. Also meine Frage noch mal auf den Punkt gebracht wie kann es das realisieren das ich den Wert von $xyz bekomme

Drakes
16.05.2007, 20:59
noch ne frage:
wie ich finde eine dummer allerdings weiß ich mir nicht zu helfen.



<?php
$var = "$xyz";
?>

klar so wir $var der Wert "$xyz" zugewießen aber genau das ist mein Problem wie kann ich das machen, das ich nicht $var den Wert "$xyz" zuweiße sondern den Wert von $xyz?

klar man könnte es so schreiben


<?php
$var = $xyz;
?>

doch kann ich es nicht so schreiben da $xyz als string angesehen wird also als Text. Also irgendwie total verwirrent.
aufjeden fall wenn ich



<?php
echo $var;
?>


schreibe kommt nur $xya raus. Also meine Frage noch mal auf den Punkt gebracht wie kann es das realisieren das ich den Wert von $xyz bekomme

Ich sehe bei deiner 2. Version das Problem nicht, Sorry. Aber du kannst die Integer-Werte, etc. sowieso wie ein String verwenden.

mitaki
16.05.2007, 21:22
Mit der Funktion strval() wandelst du eine Variable in eine Zeichenkette um.


$xyz = 15; // Integer
$xyz = strval($xyz); // String
$abc = strval($xyz); // String

Alexander Parr
16.05.2007, 21:27
das problem beim 2. ist wenn ich dann echo $var schreibe gibt er:

$xyz aus also nicht den Wert davon sonst so wie es da steht mir $ und alles und das ist mein Problem das er nicht den Wert von der Variabel ausgibt.

Alexander Parr
16.05.2007, 22:00
Mit der Funktion strval() wandelst du eine Variable in eine Zeichenkette um.


$xyz = 15; // Integer
$xyz = strval($xyz); // String
$abc = strval($xyz); // String

ich möchte keinen Int zu einem strink umformen aber trotzdem danke,
ich kann es leider nicht so gut erklären.

mitaki
16.05.2007, 22:11
Es funktioniert mit allen Typen außer Arrays und Objekten.

Es gibt auch intval() zum Umwandeln in einen Interger.

Drakes
16.05.2007, 22:22
das problem beim 2. ist wenn ich dann echo $var schreibe gibt er:

$xyz aus also nicht den Wert davon sonst so wie es da steht mir $ und alles und das ist mein Problem das er nicht den Wert von der Variabel ausgibt.

Ich meine folgendermassen:


<?php
$xyz = 5;
$var = $xyz;
echo $var;
?>
So hat es bei mir 5 ausgegeben.:confused:
Nebenbei: Ich verwende PHP 5

drunken monkey
17.05.2007, 11:27
Hm, meinst du vielleicht, du willst einen Pointer auf den String haben? Also dass du $xyz erst später einen Wert zuweist, und dann $var automatisch auch den Wert zugewiesen bekommt? (Ich wüsste zwar nicht, wie/ob das in PHP geht, aber die Frage zu verstehen wäre schon mal ein Anfang. <___<)

Alexander Parr
17.05.2007, 14:57
:confused: :confused:
Ok da ich das leider irgendwie total verpeilt geschrieben habe, und das jetzt kein versteht schreib ich mal meinen ganzen Code bzw mein ganzes Vorhaben.

also ich habe 10 Variabeln von diesem Bilduploadcode:





$target_path = "./images/kalender/";

/* Add the original filename to our target path. Result is "uploads/filename.extension" */
$target_path = $target_path . basename( $_FILES['file9']['name']);

// This is how we will get the temporary file...
$_FILES['file9']['tmp_name'];

$target_path = "./images/kalender/";

$target_path = $target_path . basename( $_FILES['file9']['name']);

if(move_uploaded_file($_FILES['file9']['tmp_name'], $target_path)) {
echo "Dein Bild ( ". basename( $_FILES['file9']['name']). " ) wurde erfolgreich hochgeladen<br>";
} else{
echo "Kein Bild gewählt!<br>";
}

$pic9 = basename( $_FILES['file9']['name']);
chmod ("./images/kalender/$pic9", 0755);


den hab ich also einfach 10 mal kopiert hab schon versucht den in eine while Schleife zu packen aber irgendwie willst nicht funktionieren komisch. naja und weiter jetzt sollen die Werte von diesem Variabeln in die mylsq Datenbank eingetragen werden. So dazu soll jedes Bild ein Eintrag erhalten also muss das Eintragen 10 mal durchgeführt werden.
dazu habe ich folgenden code verwendet.

jetzt muss ja bei jedem Durchlauf der Schleife die variable sich ändern die eingetragen wird und genau daran scheitert es.


$a = 1;
while($a < 11)
{
$pic = ???? // ich habe keine Ahung wie ich halt gerade dies ermitteln kann.
if($pic != "")
{
$eintrag = "INSERT INTO kalender_pics
(pic, id_kalender)
VALUES
('$pic', '$id')";

$eintragen = mysql_query($eintrag);
}
else
{}
$a++;
}


ich hoffe ihr könnt mir helfen

Drakes
19.05.2007, 11:23
Ich komm bei deinem Script nicht draus, wieso trägst du es bei der Datenbank nicht schon beim heraufladen ein?
Wie ich es machen würde:


if(is_file($_FILES['file9']['tmp_name']))
{
$dateityp = GetImageSize($_FILES['file9']['tmp_name']);
if($dateityp[2] != 0)
{
$target_path = "./images/kalender/".$_FILES['file9']['name'];
move_uploaded_file($_FILES['file9']['tmp_name'], $target_path);
$eintrag = "INSERT INTO kalender_pics
(pic, id_kalender)
VALUES
('$target_path', '$id')";

$eintragen = mysql_query($eintrag);
}
else
{
echo "Diese Datei hat einen falschen Dateityp.<br />";
}
}
else
{
echo "Kein Bild gewählt!<br>";
}
clearstatcache();

Alexander Parr
19.05.2007, 21:59
ok danke so probiere ich es mal.

deadshox
28.05.2007, 18:21
Tag zusammen,
hab mal wieder nen Brett vorm Kop.

Es dreht sich um Arrays.
Wie kann ich dort ein Beliebiges Element loeschen?
Seh da irgend wie nicht durch wie das mit array_slice() leuft. Immer wenn ich ein Element loeschen will loescht er gleich alle oder nur ein paar.

Hab noch nicht oft mit Arrays rumgespielt deshalb kann ich mir keinen Reim drauf machen.

Hoffe ihr habt da gute Hilfen fuer mich.

Manni
28.05.2007, 20:04
Entweder mit

array_splice($array, $pos, 1)
oder mit

unset($array[$key])
Die Dokumentation zu array_splice() (http://de.php.net/manual/de/function.array-splice.php) ist meiner Meinung nach eigentlich ziemlich gut verständlich ;)

deadshox
28.05.2007, 20:26
Entweder mit

array_splice($array, $pos, 1)
oder mit

unset($array[$key])
Die Dokumentation zu array_splice() (http://de.php.net/manual/de/function.array-splice.php) ist meiner Meinung nach eigentlich ziemlich gut verständlich ;)

Die unset() Variante klappt so wie ich das Brauche.
Hm ich sollte mir mal oeffters die Doku angucken, gucke sonst immer nu bei selfphp.de nach.

Dankeschoen!

deadshox
06.06.2007, 19:47
Abend und sry fuer doBBelpRost. ;)

Hab mal ne frage zu den Funktionen, kann man die wie in Purebasic z.b. Global setzen?

Ich wuerde gernen in einer Funktion eine andere benutzen.
Mein Test sagt mir es geht aber ist es denn auch regulaer oder muss ich da was beachten?

Hier mal der Test:

<?
function test1(){
$foo = "hm";
echo $foo;
}
function test2(){
echo"<br />ey<br />";
test1();
}
function test3(){
echo"<br />puhh";
test2();
}

test3();
?>

Mein vorhaben sieht so aus: Ich will MySQL abfragen in eine Funktion Packen und die in anderen Funktionen benutzen.

malu
06.06.2007, 22:02
Ja, geht, man kann Funktionen aus anderen Funktionen heraus aufrufen. Sonst wäre Rekursion in PHP wohl unmöglich, denke ich ;)
Als global muss man sie nicht definieren.

DFYX
07.06.2007, 16:40
Jep, der Code sollte so wie er da steht eigentlich funktionieren.

deadshox
10.06.2007, 14:39
Danke noch mal fuer die Antworten. ;]

So hab mal wieder einer neue Frage.

Ich habe mir ein BBcode System gebastelt was man ueber eine MySQL Datenbank erweitern kann.
Um der Sicherheit willen habe ich es so gemacht, das wenn man HTML Code ueber ein Formular eingibt wird es rausgesucht und entfernt. Was aber schlecht ist denn so kann man ja garnicht den HTML Code zum zugehoerigen BBcode eingeben.

Was kann ich machen damit die Sicherheit trotzdem weiterhin gewaehrt bleibt?

Bluescreen
10.06.2007, 15:06
Ich habe mir ein BBcode System gebastelt was man ueber eine MySQL Datenbank erweitern kann.
Um der Sicherheit willen habe ich es so gemacht, das wenn man HTML Code ueber ein Formular eingibt wird es rausgesucht und entfernt. Was aber schlecht ist denn so kann man ja garnicht den HTML Code zum zugehoerigen BBcode eingeben.

Was kann ich machen damit die Sicherheit trotzdem weiterhin gewaehrt bleibt?


Du meinst, dass wenn man Codeschnipsel wie hier in einem

<Code>
einfügen kann?
Dann ersetze einfach die < und > gegen die Zeichenkette &lt; für <, und &gt; für >.
Dann hast du sie nämlich mit den offiziellen HTML Sonderzeichen ersetzt. Sie werden dann so im HTML Dokument angezeigt.

Ein Sicherheitsloch entsteht dadurch nicht.

So, ich hab jetzt auch mal wieder eine Frage, bezüglich CSS:
Kann ich per CSS Formatierung den Broswer anweisen, Leerzeichen gar nicht auszugeben?

Manni
10.06.2007, 15:33
So, ich hab jetzt auch mal wieder eine Frage, bezüglich CSS:
Kann ich per CSS Formatierung den Broswer anweisen, Leerzeichen gar nicht auszugeben?

Meines Wissens nicht.

deadshox
10.06.2007, 15:59
Dann ersetze einfach die < und > gegen die Zeichenkette &lt; für <, und &gt; für >.
Dann hast du sie nämlich mit den offiziellen HTML Sonderzeichen ersetzt. Sie werden dann so im HTML Dokument angezeigt.
Dann muesste ich ja den User dazu bringen was Kompliziertes in seinen Augen zu machen und das will ich nicht. Er soll den Code so eingeben koennen wie er das will.

Wenn ich jetzt den BBcode [ b ][ / b ] habe soll der User einfach <font style: bold></font> eingeben koennen ohne weitere umstaende.

Bluescreen
10.06.2007, 16:05
Dann muesste ich ja den User dazu bringen was Kompliziertes in seinen Augen zu machen und das will ich nicht. Er soll den Code so eingeben koennen wie er das will.
Oh, nein, das Ersetzen übernimmt PHP:

$_REQUEST['Eintrag'] = str_replace("<", "&lt;", $_REQUEST['Eintrag']); //HTML ausschluss
$_REQUEST['Eintrag'] = str_replace(">", "&gt;", $_REQUEST['Eintrag']); //HTML ausschluss


Wenn ich jetzt den BBcode habe soll der User einfach <font style: bold></font> eingeben koennen ohne weitere umstaende.Hab ich jetzt nicht verstanden.
Wenn der User Text Fett formatieren macht er das doch mit einem:

Und das kannst du dann ja einfach per PHP wieder in <b> umwandeln:

$_REQUEST['Eintrag'] = str_replace("", "<b>", $_REQUEST['Eintrag']);
$_REQUEST['Eintrag'] = str_replace("", "</b>", $_REQUEST['Eintrag']);


Alles klar?!^^

Manni
10.06.2007, 16:14
Wenn ich jetzt den BBcode habe soll der User einfach <font style: bold></font> eingeben koennen ohne weitere umstaende.

Und woher soll PHP wissen, was vor und was nach dem Text kommt? Spätestens bei mehreren Tags wirds unnötig kompliziert. Und das ganze unterstützt keine Attribute. Mach das lieber mit Platzhaltern, die du dann ersetzt...


str_replace('[TEXT]', $text, '<span style="bold">[TEXT]</span>');


Oh, nein, das Ersetzen übernimmt PHP:

$_REQUEST['Eintrag'] = str_replace("<", "&lt;", $_REQUEST['Eintrag']); //HTML ausschluss
$_REQUEST['Eintrag'] = str_replace(">", "&gt;", $_REQUEST['Eintrag']); //HTML ausschluss

Ja, allerdings übernimmt PHP das mit htmlspecialchars() (http://de2.php.net/htmlspecialchars).

deadshox
10.06.2007, 16:25
Ok da liegt ein Missverstaendniss vor. ;D bzw ich hab es mal wieder falsch erklaert.

Ich habe ein BBcode System, was man in einem Admin Panel Bearbeiten und neue BBcodes Hinzufuegen kann.
Beim Hinzufuegen gibt der User einmal den Platzhalter ein, z.b. [ b ] [ / b ] und den HTML Code <font style: bold></font>, Fertig. ;]


$_REQUEST['Eintrag'] = str_replace("<", "&lt;", $_REQUEST['Eintrag']); //HTML ausschluss
$_REQUEST['Eintrag'] = str_replace(">", "&gt;", $_REQUEST['Eintrag']); //HTML ausschluss
Das sieht schon ganz gut aus aber mir is aufgefallen das das ja auch nicht geht, waer ja auch wieder ne Sicherheitsluecke. -.-