• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP nicht valide - wer hilft mir weiter?

Status
Für weitere Antworten geschlossen.

Teela

Mitglied
Hallo zusammen!

Ich habe meine Homepage durch den Validator laufen lassen
und alles verbessert, was ich konnte,
allerdings sind noch ein paar Fehler übrig,
die sich wohl in php-Codes befinden.

http://www.anime4ever.info

Da ich kein php kann, bin ich hier auf eure Hilfe angewiesen ^^'

Hier das Validator-Ergebnis:
http://validator.w3.org/check?uri=http://www.anime4ever.info/&charset=iso-8859-1&doctype=Inline

Hoffe, ihr könnt mir damit weiterhelfen

Teela

EDIT: Hab ich vergessen, das müsste die Shoutbox sein,
hier ist der Code:

Code:
<script type="text/javascript">
var namedeleted = false;
var textdeleted = false;
var maildeleted = false;
var httpdeleted = false;

function deletenamevalue()
{
	if ( namedeleted  == false and document.all.Name.value == "Name" )
	{
		document.all.Name.value = "";
		namedeleted = true;
	}
}
function deletetextvalue()
{
	if ( textdeleted  == false and document.all.Text.value == "Text" )
	{
		document.all.Text.value = "";
		textdeleted = true;
	}
}
function deletemailvalue()
{
	if ( maildeleted  == false and document.all.Mail.value == "Mail" )
	{
		document.all.Mail.value = "";
		maildeleted = true;
	}
}
function deletehttpvalue()
{
	if ( httpdeleted  == false and document.all.Website.value == "Website" )
	{
		document.all.Website.value = "http://";
		httpdeleted = true;
	}
}
</script>
<?
/* Diese Konfigurationen sollten nicht geändert werden, wenn das System läuft. */
	$dbms = 'mysql';
	$db_host = 'localhost';
	$db_name = 'db1038550-phpbb';
	$db_user = 'dbu1038550';
	$db_pass = 'nosferatu';
	$db_domain = 'localhost';
/* Verbindung zur Datenbank aufbauen */
	$db = mysql_connect($db_host,$db_user,$db_pass) or die(mysql_error());
	mysql_select_db($db_name) or die(mysql_error());
/* Funktionen */
	function encode_ip($dotquad_ip)
	{
		$ip_sep = explode('.', $dotquad_ip);
		return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
	}

	function decode_ip($int_ip)
	{
		$hexipbang = explode('.', chunk_split($int_ip, 2, '.'));
		return hexdec($hexipbang[0]). '.' . hexdec($hexipbang[1]) . '.' . hexdec($hexipbang[2]) . '.' . hexdec($hexipbang[3]);
	}
/* Beginn des Haupttextes */

if ( $_POST['Text'] != "" and $_POST['Name'] != "" )
{
	$name = "'" . $_POST['Name'] . "'";
	$text = "'" . $_POST['Text'] . "'";
	$text = str_replace("<", "&lt;", $text);
	$text = str_replace(">", "&gt;", $text);
	$mail = $_POST['Mail'];
	$Website = $_POST['Website'];
	$ip = $_SERVER['REMOTE_ADDR'];
	$ip = encode_ip($ip);
	if ($Website != "")
	{
		if (!preg_match('#^http[s]?:\/\/#i', $Website))
		{
			$Website = 'http://' . $Website;
		}

		if (!preg_match('#^http[s]?\\:\\/\\/[a-z0-9\-]+\.([a-z0-9\-]+\.)?[a-z]+#i', $Website))
		{
			$Website = 'NULL';
		}
		else
		{
			$Website = "'" . $Website . "'";
		}
	}
	$mail = ( $mail == "@" ) ? "NULL" : "'" . $mail . "'";
	$sql_insert = "INSERT INTO shoutbox (Name, Text, Mail, Website, shouttime, IP) VALUES (" . $name . ", " . $text . ", " . $mail. ", " . $Website . ", '" . time() . "', '" . $ip . "')";
	mysql_query($sql_insert)or die(mysql_error());
}
elseif ( $_POST['Text'] == "" and $_POST['Name'] != "" )
{
	echo "<span class=\"all\">Du hast keinen Text eingegeben! Dieser ist nötig um deinen Beitrag abschicken zu können und zu speichern!</span>";
}
elseif ( $_POST['Text'] != "" and $_POST['Name'] == "" )
{
	echo "<span class=\"all\">Du hast keinen Namen eingegeben, bitte gib einen Namen an um den Beitrag speichern zu können!</span>";
}
elseif ( isset($_POST['sent_values']) and $_POST['text'] == "" and $_POST['Name'] == "" )
{
	echo "<span class=\"all\">Du musst einen Namen und einen Text angeben!</span>";
}
?>
<table border="0" >
<?
$counter = "SELECT COUNT(ID) AS total FROM shoutbox";
$row = mysql_query($counter); 
$row = mysql_fetch_array($row);
$sb_entries = $row['total'];

$sql = mysql_query("SELECT * FROM shoutbox ORDER BY ID DESC");
if ( $sb_entries != "0" )
{
	while ( $obj = mysql_fetch_object($sql) )
	{

?>
    <tr>
      <td  class="<? echo ( $bgcount == "0" ) ? "SB_table0" : "SB_table1"; ?>" >
<?
		if ( $obj->Mail != "" )
		{
			if ( $obj->Website != "" )
			{
				echo "<a href=\"mailto:" . $obj->Mail . "\">" . $obj->Name . "</a> (<a href=\"" . $obj->Website . "\" target=\"_blank\">HTTP</a>) schrieb am " . date(d . "." . m . "." . Y, $obj->shouttime) . " um " . date(H . ":" . i . ":" . s, $obj->shouttime);
			}
			else
			{
				echo "<a href=\"mailto:" . $obj->Mail . "\">" . $obj->Name . "</a> schrieb am " . date(d . "." . m . "." . Y, $obj->shouttime) . " um " . date(H . ":" . i . ":" . s, $obj->shouttime);	
			}
		}
		else
		{
			if ( $obj->Website != "" )
			{
				echo $obj->Name . " (<a href=\"" . $obj->Website . "\" target=\"_blank\">HTTP</a>) schrieb am " . date(d . "." . m . "." . Y, $obj->shouttime) . " um " . date(H . ":" . i . ":" . s, $obj->shouttime);
			}
			else
			{
				echo $obj->Name . " schrieb am " . date(d . "." . m . "." . Y, $obj->shouttime) . " um " . date(H . ":" . i . ":" . s, $obj->shouttime);
			}
		}
		echo "<br /><br />" . $obj->Text;
?>
      </td>
    </tr>
<?
		$bgcount = ( $bgcount == "0" ) ? "1" : "0";
	}
	echo "<a name=\"bottom\"></a>";
}
else
{
?>
    <tr>
      <td  >
        Es sind keine Einträge in der Shoutbox vorhanden!
      </td>
    </tr>

<?
}
?>
</table>
<form method="post">
  <table border="0"  class="SB_formarea">
    <tr>
      <td align="center">
        <input type="text" name="Name" class="SB_input" onClick="deletenamevalue()" value="<?
if ( isset($_POST['Name']) and $_POST['Name'] != "")
{
	echo $_POST['Name'];
}
else 
{
	echo "Name";
}
?>
" maxlength="10" style="width: 90%;" />
      </td>
    </tr>
    <tr>
      <td align="center">
        <input type="text" name="Text" class="SB_input" onClick="deletetextvalue()" value="<?
if ( isset($_POST['Text']) and $_POST['Text'] != "")
{
	echo $_POST['Text'];
}
else
{
	echo "Text";
}
?>" maxlength="150" style="width: 90%;" />
      </td>
    </tr>
    <tr>
      <td align="center">
        <input type="text" name="Mail" class="SB_input" onClick="deletemailvalue()" value="<?
if ( isset($_POST['Mail']) and $_POST['Mail'] != "@" and $_POST['Mail'] != "" )
{
	echo $_POST['Mail'];
}
else
{
	echo "Mail";
}
?>" maxlength="30" style="width: 90%;" />
      </td>
    </tr>
    <tr>
      <td align="center">
        <input type="text" name="Website" class="SB_input" onClick="deletehttpvalue()" value="<?
if ( isset($_POST['Website']) and $_POST['Website'] != "http://" and $_POST['Website'] != "")
{
	echo $_POST['Website'];
}
else
{
echo "Website";
}
?>
" maxlength="50" style="width: 90%;" />
      </td>
    </tr>
    <tr>
      <td align="center">
	<input type="hidden" name="sent_values" value="true" />
        <input type="submit" class="SB_button" value="Senden" />
      </td>
    </tr>
  </table>
</form>
 
Zuletzt bearbeitet:
Das ist kein PHP das ist Javascript

@MODS: Bitte irgendwohin verschieben wo es passt *g
 
Ja aber der validator kann php genausowenig sehen wie ein browser (:

edit: achso versuch mal die "&&" durch "and" zu ersetzen. ich denke das sollte gehen
 
niklasboelter schrieb:
edit: achso versuch mal die "&&" durch "and" zu ersetzen. ich denke das sollte gehen

Ok, danke, das hat schon einige Fehler weggemacht,
aber ein paar Sachen stimmen immer noch nicht.

Was ich nicht verstehe ist,
dass das target="_blank" und das <a name="bottom">,
an denen er rummeckert, gar nicht so im Quelltext stehen...

Das mit dem "required attribute "action" not specified." kapiere ich nicht,
und wie kann man das "onclick" ersetzen, da es das laut Validator ja "nicht gibt" ?
 
Hi Teela

wenn man kein Englisch kann, sollte man vielleicht einen deutschen Validator wählen.

Mal abgesehen von der "fehlenden/falschen" Zeichensatzangabe erhält man dieses Validator-Ergebnis.

Für weitere Fragen stehe ich gerne zur Verfügung. :wink:

Gruß
Hobbyuser
 
Zuletzt bearbeitet von einem Moderator:
Also er meckert ja anscheinend nur am Dokumttyp herum.
Was ist denn daran falsch? den Hab ich 1:1 aus meinem HTML-Buch abgeschrieben...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Und was ist die Zeichensatzangabe?
Ist das nicht das?:

<meta http-equiv="Content-Type" content="text/css; charset=iso-8859-1" />

Also jetzt blick ich's echt noch weniger, sry...
 
Teela schrieb:
Also er meckert ja anscheinend nur am Dokumttyp herum.
Was ist denn daran falsch? den Hab ich 1:1 aus meinem HTML-Buch abgeschrieben...

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Da meckert der Validator nicht, er gibt dir lediglich einen Hinweis. Und zwar das du ein XML Dokument als TEXT/HTML übergibst und dieses nur machen sollst, wenn es den Vorgaben für TEXT/HTML entspricht. Was der Fall sein sollte wenn die Seite valide ist. :wink:

Teela schrieb:
Und was ist die Zeichensatzangabe?
Ist das nicht das?:

HTML:
<meta http-equiv="Content-Type" content="text/css; charset=iso-8859-1" />
Bei HTML schon, nur leider werden die META-Tags bei XHTML ignoriert. Sprich hier muss der Zeichensatz im Header vom Server übergeben werden oder in der XML-Deklaration.
LINK: http://de.selfhtml.org/html/xhtml/unterschiede.htm#xml_deklaration

Teela schrieb:
Also jetzt blick ich's echt noch weniger, sry...
Sorry, das war nicht meine Absicht. Jedoch hast du mal gerade 5 Fehler welche sich in 2 Minuten beheben lassen.

Also welchen Fehler verstehst du nicht?

PS: Link im ersten Post berichtig!
 
Bei HTML schon, nur leider werden die META-Tags bei XHTML ignoriert. Sprich hier muss der Zeichensatz im Header vom Server übergeben werden oder in der XML-Deklaration.
LINK: http://de.selfhtml.org/html/xhtml/unterschiede.htm#xml_deklaration

Ich hab jetzt mal die "XML-Daklaration" dazugemacht:
<?xml version="1.0" encoding="iso-8859-1"?>

Und jetzt erhalte ich folgendes Resultat:
Parse error: syntax error, unexpected T_STRING in /is/htdocs/wp1038550_0QP17XPZPX/www.anime4ever.info/index.php on line 1

Wenn ich es weglasse funktioniert aber alles einwandfrei...
Kann man es dann weglassen?

Btw, der Validator zeigt immer noch die 4 PHP-Fehler an.
WIe kriege ich die denn nun weg?

EDIT: Der Validator sagt: "Dieses XHTML 1.0-Dokument wurde mit dem MIME-Type text/html ausgeliefert, der jedoch nicht verwendet werden sollte, wenn das Dokument nicht den Richtlinien zur Kompatibilität mit HTML entspricht."
Aber wo steht denn bei mir das text/html?
 
Du benutzt einen sehr schlecht konfigurierten Webserver
PHP:
<?php
echo '<?xml version="1.0" encoding="iso-8859-1"?>'."\n";
?>
Versuchs mal damit ;)
 
niklasboelter schrieb:
Du benutzt einen sehr schlecht konfigurierten Webserver
PHP:
<?php
echo '<?xml version="1.0" encoding="iso-8859-1"?>'."\n";
?>
Versuchs mal damit ;)

Habs versucht, das Resultat war, dass oben links stand:
Code:
'."/n";?>
xD
 
OMFG das ist ja krank

PHP:
<?php
echo '<'.'?'.'xml version="1.0" encoding="iso-8859-1"'.'?'.'>'."\n";
?>

Vielleicht so?

ps: mich würde mal deine phpversion() interessieren...
 
Ebenfalls versucht, da hat es mit die Schriftformatierung von Shoutbox und Umfrage zerhauen -.-

WIe kriegt man seine php-Version raus?
 
@ Teela so sieht meine Deklarierung auch, so funktioniertes bei mir wunderbar:
<?php
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; ?>
<!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" lang="de" xml:lang="de">
 
Nunja, zum Ersten wurde das Layout verrissen,
zum Zweiten wurden wieder die Zeichen oben links angezeigt,
zum Dritten sind alle Umlaute weg...

Also so funktioniert es bei mir nicht...
 
Ich habs nochmal mit einer neuen Datei versucht...

Auf meinem Lokalen Rechner wird es nach wie vor mit Fehlern angezeigt,
im Netz ist es einer weniger, trotzdem...

http://www.anime4ever.info/index2.php
http://www.anime4ever.info/index.php

Vergleiche die mal im Internet Explorer ...

EDIT: Ich denke, das lassen wir erst mal,
ich frage mal bei meinem Hoster nach, warum die normale Deklaration nicht funktioniert...

Viel wichtiger ist, es sind noch ein paar wenige Fehler übrig,
die noch verbessert werden müssen:
http://validator.w3.org/check?uri=http://www.anime4ever.info/&charset=iso-8859-1&doctype=Inline

Womit kann man onClick ersetzen?
 
Zuletzt bearbeitet:
Zum Fehler 'there is no attribute "onClick"':
Die Vorgabe bei der Verwendung von XHTML ist, das wie in XML alle Attribute _klein_ geshrieben werden müssen.
Zum Fehler 'required attribute "action" not specified':
Das Attribut 'action' ist eine Pflichtangabe und kann nicht weggelassen werden. Sie dazu selfhtml
 
Zuletzt bearbeitet:
ok... ich hab jetzt die Deklaration nochmal versucht,
hab einfach folgende genommen:
(eine Mischung aus der von niklasboelter und von Alti ^^)
PHP:
<?php
echo '<'.'?'.'xml version="1.0" encoding="iso-8859-1"'.'?'.'>'."\n";
?> <!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" lang="de" xml:lang="de">
und hab alle Layoutfehler manuell verbessert...

Wegen dem php-Fehler, da muss ich mich noch mit dem Ersteller der Shoutbox bereden,
da er der Meinung ist, das "action"-Attribut könnte man nicht verwenden,
da die Shoutbox in einem Include ist und sich das Ganze sonst in einem neuen Fenster öffnen würde.
Ich hab davon keine Ahnung, stimmt das?

Mod-Edit: Es gibt diese hübschen kleinen [noparse]
PHP:
[/noparse]-Tags... :roll: [/b] (flapo)
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
Zurück
Oben