Sie sind nicht angemeldet.

1

Mittwoch, 10. März 2010, 10:05

Viele Fehler in Analyen und Validatoren

Hallo,

ich habe letztens mal wieder meine Homepage gecheckt und habe über 200 HTML Fehler und Spaghetti Codes.
Die meisten kommen im Artikelsystem vor und wollte dich bitten, mir Tipps zu geben, die letzten Fehler, die ich nicht beheben konnte, zu bewerten und was man da machen kann.

Siehe folgende Tests:
http://www.qualidator.com/WQM/de/Tools/S…2f%2fmeladie.de

http://validator.w3.org/check?uri=http%3…=Inline&group=0

Manches kann ich nicht nachvollziehen.

Meine Seite ist in HTML 4.01 Strict und iso-8859-1 aufgebaut. Das Artikelsystem in XHTML(!?).
Ich glaube, das muss man anpassen, da viele Tags mit /> beendet werden, was in HTML nicht erlaubt ist und es daher Fehler gibt.

Michael Lorer

Siteadministrator

Beiträge: 2 510

Wohnort: Wangen / Augsburg

  • Nachricht senden

2

Mittwoch, 10. März 2010, 14:44

Zitat

Meine Seite ist in HTML 4.01 Strict und iso-8859-1 aufgebaut. Das Artikelsystem in XHTML(!?).
Ich glaube, das muss man anpassen, da viele Tags mit /> beendet werden, was in HTML nicht erlaubt ist und es daher Fehler gibt.
Ja, das Artikelsystem setzt auf XHTML 1.1
Etwas anderes als ggf. die Templates durchzugehen und die Tags entsprechend anzupassen bleibt da nicht übrig.

Die Analyse auf qualidator.com finde ich nicht sonderlich gelungen.
Was mit Spaghetti-Markup gemeint ist, erschließt sich mir nicht.
Warum URLs des Typs "index.php?catid=34" als "komplexe URLs" markiert werden, ist mir ebenfalls nicht klar.
Die Hinweise auf Kopfzellen und Tabellenzusammenfassungen sind soweit zwar korrekt - entsprechende Elemente sind aber eben halt standardmäßig im Artikelsystem nicht enthalten und müssten ggf. selbst manuell eingefügt werden.

Prinzipiell ist es nicht ganz einfach ein PHP-Script zu veröffentlichen, dass zum einen auch von unerfahrenen Anwendern installiert und betrieben werden können soll und gleichzeitig absolut syntaktisch korrekte Ausgaben zu erhalten.
Das schlägt sich vor allem in den validator.w3.org-Fehlermeldungen durch.
Ein Schritt wäre, dass die JavaScript-Teile aus dem main_top.html-Template des Artikelsystems in den echten Head-Bereich der Seite verlagert werden.
Jesus lebt

Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal
Oder beschenken über die Amazon Wunschliste

Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

3

Donnerstag, 11. März 2010, 00:52

Okay.

Also in der Datei "main_top.html" soll dieser Part in meine head.php:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script src="<?PHP echo $tempdir?>javas.js" type="text/javascript"></script>
<?php if ($settings['artikellightbox'] == 1): ?>
<script src="<?PHP echo $subfolder?>01acp/system/js/mootools-core.js" type="text/javascript"></script>
<script src="<?PHP echo $subfolder?>01acp/system/js/mootools-more.js" type="text/javascript"></script>
<script src="<?PHP echo $subfolder?>01acp/system/js/mootools-remooz.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="<?PHP echo $subfolder?>01acp/system/js/mootools-remooz.css">

<script type="text/javascript">
    window.addEvent('load', function() {
    ReMooz.assign('#_01article a.lightbox', {
        'origin': 'img',
        'shadow': 'onOpenEnd', // fx is faster because shadow appears after resize animation
        'resizeFactor': 0.9, // resize to maximum 80% of screen size
        'cutOut': false, // don't hide the original
        'opacityResize': 0.4, // opaque resize
        'dragging': false, // disable dragging
        'centered': true // resize to center of the screen, not relative to the source element
    });
});
</script>
<?php endif; ?>
<?php echo $echo_css?>


Darunter geht bei mir der erste Div los.
Die PHP Anweisungen müssen dann dementsprechend auch in die head.php, so wie ich alles da oben reinkopiert habe?


Dann die zweite Frage:
"end tag for element "P" which is not open"
Der meldet die <p>, die in den Dateien wie artikel.html sind... Obwohl ich mit <p> starte und mit </p> beende, meint der W3C, dass ich ein </p> setze, obwohl ich kein <p> angefangen hätte.
Was soll man da machen?
Das Gleiche auch bei <form>, etc...

Und was kann ich machen, dass, wenn ich Bilder im Editor einfüge, dass der nicht automatisch mit /> schließt?
Wenn ich das unter "HTML", also im HTML Editor wegeditier, aktualisiere und abspeicher, sind diese wieder da?!

Michael Lorer

Siteadministrator

Beiträge: 2 510

Wohnort: Wangen / Augsburg

  • Nachricht senden

4

Donnerstag, 11. März 2010, 13:44

Den Teil aus der main_top.html einfach in den head-Tag kopieren geht nicht.
Sie müssen die Pfade zu den JavaScript-Dateien anpassen.
Das heißt jeweils diese Stellen:

PHP-Quelltext

1
2
<?PHP echo $tempdir?>
<?PHP echo $subfolder?>
durch den entsprechenden Pfad zu den Dateien ersetzen.

Außerdem müssen die Zeilen 2 und 21 aus dem von Ihnen geposteten Codeabschnitt entfernt werden.

Zitat

Dann die zweite Frage:
"end tag for element "P" which is not open"
Der meldet die <p>, die in den Dateien wie artikel.html sind... Obwohl ich mit <p> starte und mit </p> beende, meint der W3C, dass ich ein </p> setze, obwohl ich kein <p> angefangen hätte.
Was soll man da machen?
Das Gleiche auch bei <form>, etc...

Da ist mir leider auch nicht klar, warum diese Fehlermeldungen angezeigt werden.
Ich kann mir höchstens vorstellen, dass irgendwo weiter oben im Quelltext ein <p> oder </p> zu viel/wenig vorkommt.

PHP-Quelltext

1
2
Und was kann ich machendasswenn ich Bilder im Editor einfügedass der nicht automatisch mit /> schließt?
Wenn ich das unter "HTML"also im HTML Editor wegeditieraktualisiere und abspeichersind diese wieder da?!

Das lässt sich leider nicht ändern, da der Editor momentan auf XHTML vorkonfiguriert ist.
Jesus lebt

Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal
Oder beschenken über die Amazon Wunschliste

Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

5

Donnerstag, 11. März 2010, 14:46

Könnte ich nicht alle Dateien aus dem ACP von Dreamweaver auf /> durchsuchen lassen und ersetzen?

Genau so die Doctypes ändern?

Wenn ja, muss ich noch was anderes beachten?

Michael Lorer

Siteadministrator

Beiträge: 2 510

Wohnort: Wangen / Augsburg

  • Nachricht senden

6

Donnerstag, 11. März 2010, 14:59

Könnte ich nicht alle Dateien aus dem ACP von Dreamweaver auf /> durchsuchen lassen und ersetzen?

Ich glaube kaum, dass das klappen wird.
Jesus lebt

Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal
Oder beschenken über die Amazon Wunschliste

Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

7

Donnerstag, 11. März 2010, 15:13

Wieso denn nicht?
So habe ich viele Teile des Scripts angepasst. ^^

Michael Lorer

Siteadministrator

Beiträge: 2 510

Wohnort: Wangen / Augsburg

  • Nachricht senden

8

Donnerstag, 11. März 2010, 15:24

Sie können das ja gern probieren.
Wenn dann aber etwas nicht mehr funktionieren sollte, stehe ich für die Fehlersuche nicht zur Verfügung.
Jesus lebt

Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal
Oder beschenken über die Amazon Wunschliste

Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

9

Donnerstag, 11. März 2010, 15:39

Dann die zweite Frage:
"end tag for element "P" which is not open"
Der meldet die , die in den Dateien wie artikel.html sind... Obwohl ich mit
starte und mit
beende, meint der W3C, dass ich ein setze, obwohl ich kein angefangen hätte.
Was soll man da machen?

Quellcode

1
2
3
4
<div id="main">	<h1>Herzlich Willkommen</h1>

	<h2>meladie.de - RnB, Rap,  HipHop, Pop &amp; Soul Musikpromotionportal</h2>
	</p>


Hier fehlt der Anfang Tag. <p> Zeile 116 bzw. ist zuviel da ja h1 und h2 vorhanden ist.

10

Donnerstag, 11. März 2010, 16:03

Okay.

Ahhh, Vielen Dank René.

11

Donnerstag, 11. März 2010, 17:53

Beim Einfügen von Videos, haben Sie sicherlich den Code von Youtube kopiert.

Falscher Code von Youtube: Nicht Valide

Quellcode

1
2
3
4
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/..."></param>
<param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/..." type="application/x-shockwave-flash" allowscriptaccess="always" 
allowfullscreen="true" width="425" height="344"></embed></object>


Richtiger Code: Valide

Quellcode

1
2
3
<object type="application/x-shockwave-flash" width="425" height="344" data="http://www.youtube.com/v/...">
<param name="movie" value="http://www.youtube.com/v/..."></param>
<param name="wmode" value="transparent"></param></object>

12

Samstag, 20. März 2010, 16:18

Danke René.
Jetzt ist (mit noch kleinen Veränderungen) der Youtube Code valide.

Viele Seiten habe ich valide bekommen, allerdings habe ich nun & und = Fehler bei den Links.

Ich habe mal schnell drüber geschaut, diese Zeichen werden schon durch die HTML Enities replaced.

Wo kann ich es einstellen?

Hier die Fehlerbeschreibungen:

W3c Validator

Michael Lorer

Siteadministrator

Beiträge: 2 510

Wohnort: Wangen / Augsburg

  • Nachricht senden

13

Samstag, 20. März 2010, 16:30

Wenn ich das richtig gesehen habe, kommen die Links auf dieser Seite:
http://meladie.de/kyra/
im Abschnitt "Downloads" doch nicht aus dem Artikelsystem raus.
Diese Links wurden doch manuell eingegeben, oder? Auf jeden Fall wurde bei den ganzen Links dort im Quelltext das &-Zeichen nicht durch &amp; ersetzt. Daher die Meldungen beim Validator.
Jesus lebt

Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal
Oder beschenken über die Amazon Wunschliste

Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

14

Samstag, 20. März 2010, 18:19

Genau, Kyra ist nur ein Beispiel.
Die Links gebe ich manuell ein.
Also muss ich bei der Ausgabe das auch irgendwie automatisch anpassen lassen!?

Hast du eine kurze Lösung oder wenigstens einen Ansatz dafür?

Michael Lorer

Siteadministrator

Beiträge: 2 510

Wohnort: Wangen / Augsburg

  • Nachricht senden

15

Samstag, 20. März 2010, 18:58

So ganz kapier ich es noch nicht.
Ist die verlinkte Beispielseite kein einfaches HTML-Dokument?

Prinzipiell muss halt statt & jeweils &amp; eingegeben werden bzw. dadurch ersetzt werden.
Mit PHP geht das z.B. mit dieser Funktion:
http://de2.php.net/manual/de/function.str-replace.php
Jesus lebt

Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal
Oder beschenken über die Amazon Wunschliste

Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

16

Sonntag, 21. März 2010, 02:39

Ja,
ich trage die URL per eigener "ACP" für Profile die Links ein, die ich kopiert habe.
Da müsste wohl ein str_replace stattfinden.

Hier ein paar Zeilen:

PHP-Quelltext

1
2
3
<td><?php if(!empty($row['songtext'])) { ?><a href="<?php echo $row['songtext']; ?>" title="Songtext öffnen" target="_blank"><img src="../img/songtext.JPG" title="Songtext öffnen" alt="Songtext" width="15" height="15"></a>
    <?php
    } else { ?><a href="../add_songtext.php" title="Noch kein Songtext vorhanden - Klick hier, um einen einzureichen"><img src="../img/no_songtext.jpg" width="15" height="15" alt="No Songtext" title="Kein Songtext vorhanden"></a><?php  ?></td></tr>


Hier wird nach "songtext" abgefragt -> falls vorhanden, dann eine URL, die ich ja aus der Browserzeile kopiere.

Und so wird es eingetragen: admin.php

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php if(!empty($row['songtext'])) { ?><a href="<?php echo $row['songtext']; ?>" target="_blank"><img src="../img/songtext.JPG" /></a><?php ?>

...

  <?php
} elseif(isset($_GET['action'])){
    
    if(isset($_GET['action']) && isset($_GET['mode'])){
        if($_GET['action']=="change" && $_GET['mode']=="ok"){
            if(isset($_POST['submit'])){
                $id=1;
                $titel="test";
                $comment="";
                if(isset($_GET['id'])) $id=$_GET['id'];
                if(isset($_POST['titel'])) $titel=$_POST['titel'];
                if(isset($_POST['cmnt'])) $comment=$_POST['cmnt'];
                $datum mysql_real_escape_string($_POST['datum']);
                $datum preg_replace("/\./","-",$datum);
                $datum explode("-",$datum);
                $datum $datum[2]."-".$datum[1]."-".$datum[0];
                $select mysql_query("SELECT * FROM `".$tabelle."` WHERE `id`='".mysql_real_escape_string($id)."' ");
                $datei mysql_fetch_assoc($select);
                $titel preg_replace("/(\\\')+/","'",$titel);
                $titel2 $datei['titel'];
                $titel2 preg_replace("/(\\\')+/","'",$titel2);
                rename($ordner."/".$titel2,$ordner."/".$titel);
                
                $update = @mysql_query("UPDATE `".$tabelle."` SET `titel` = '".mysql_real_escape_string($titel)."' , 
                `datum`='".$datum."', 
                `tracklist`='".mysql_real_escape_string($_POST['tracklist'])."' ,
                `songtext`='".mysql_real_escape_string($_POST['songtext'])."' ,
                `youtube`='".mysql_real_escape_string($_POST['youtube'])."' ,
                `zeit`='".mysql_real_escape_string($_POST['zeit']).":00' , 
                `cmnt`='".mysql_real_escape_string($_POST['cmnt'])."' 
                WHERE `id` ='".mysql_real_escape_string($_GET['id'])."' LIMIT 1");
                $update = @mysql_query("UPDATE `statistiken` 
                SET `titel` = '".mysql_real_escape_string($titel)."' , 
                `datum`='".$datum."', `zeit`='".mysql_real_escape_string($_POST['zeit']).":00' , 
                `cmnt`='".mysql_real_escape_string($_POST['cmnt'])."' 
                WHERE `tid` ='".mysql_real_escape_string($_GET['id'])."' LIMIT 1");
            
            echo "<center> Erfolgreich ge&auml;ndert!<br /><br /><a href=\"admin.php\">Zur&uuml;ck</a></center>";
            }
        }
                $sql2=mysql_query("SELECT * FROM `".$tabelle."` WHERE `id`='".mysql_real_escape_string($_GET['id'])."' ORDER BY `datum` DESC, `zeit` DESC");
                $row mysql_fetch_assoc($sql2);
                $datum $row['datum'];
                $datum preg_replace("/\-/",".",$datum);
                $datum explode(".",$datum);
                $datum $datum[2].".".$datum[1].".".$datum[0];
            ?>

Michael Lorer

Siteadministrator

Beiträge: 2 510

Wohnort: Wangen / Augsburg

  • Nachricht senden

17

Sonntag, 21. März 2010, 11:36

Bei der Ausgabe muss

PHP-Quelltext

1
<?php echo $row['songtext']; ?>

eben mit der str_replace-Funktion behandelt werden:

PHP-Quelltext

1
<?php echo str_replace("&","&amp;",$row['songtext']); ?>
Jesus lebt

Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal
Oder beschenken über die Amazon Wunschliste

Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

18

Sonntag, 21. März 2010, 12:42

Danke, das funktioniert jetzt alles.
Alles ohne Fehler außer die Startseite, wo aus einem <br> automatisch ein <br /> gemacht wird.
Ich habe es mit dem selben Befehl versucht, aber dann ist der Artikeltext komplett verschwunden.

PHP-Quelltext

1
<?php echo $artikeltext?>

Michael Lorer

Siteadministrator

Beiträge: 2 510

Wohnort: Wangen / Augsburg

  • Nachricht senden

19

Sonntag, 21. März 2010, 13:40

Zitat

Ich habe es mit dem selben Befehl versucht, aber dann ist der Artikeltext komplett verschwunden.
Das kann eigentlich fast nicht sein.
Da muss sich dann irgend ein Fehler eingeschlichen haben

PHP-Quelltext

1
<?php echo str_replace("<br />","<br>",$artikeltext); ?>
Jesus lebt

Sie waren mit dem Support zufrieden? Dann unterstützen Sie diese Seite - Spenden per PayPal
Oder beschenken über die Amazon Wunschliste

Öffentlicher PGP-Schlüssel zur sicheren E-Mail-Kommunikation.

20

Dienstag, 23. März 2010, 19:36

Klappt wunderbar.
Meine Homepage ist nun endlich fehlerfrei.

Thema bewerten