Datentyp 'boolean' definieren, auf gültigen RGB Code tracken

S

sevY

Hi zusammen,

hier ein Auszug aus meinem Script und anschließend die Fragen dazu :)

PHP:
    echo"
        <body onload=\"javascript:dialog();\">
        ";
    $valid='false';
    }
else
    {
    echo"
        <body>
        ";
    $valid='true';

Wie definiere ich die Variable $valid als boolschen Datentyp? Also so als String geht ja auch, aber geht es nicht irgendwie das ich das „sauber“ löse? Ist hier eher unwichtig, aber gut für mich zur Übung.

PHP:
if((isset($_POST['colourswitch']) && !empty($_POST['colourswitch'])) && $valid=='true')
Wie prüfe ich nun die Variable $valid auf true oder false im boolschen Sinne nachdem ich sie oben entsprechend definiert habe?

PHP:
eregi('#',$_POST['rgb'])

Hier überprüfe ich nur, ob der RGB Code auch eine # beinhaltet.

Ich würde das gerne in eine Funktion zusammenfassen, die die Variable $_POST['rgb']

1.) auf die # am Anfang(!) des Codes überprüft
2.) ab der 2. Stelle auf eine Länge von 6 Zeichen prüft
3.) ab der 2. Stelle die Zeichen auf gültige RGB Definitionszeichen prüft (zb ein @ ist nicht erlaubt)

Ich dachte dabei an eine abstrakte Funktion in dieser Form, die dann true bzw. false wiedergibt:

PHP:
    function check_rgb($x)
        {
        //Aktionen
        }


Vielen Dank und liebe Grüße

Yves
 
Na Du,

also, die Variable $valid definierst Du folgendermaßen:
PHP:
$valid = TRUE;

Um zu prüfen, ob diese auch TRUE ist, einfach:
PHP:
if ($valid)

Wenn Du prüfen möchtest, ob sie nicht TRUE ist (also FALSE):
PHP:
if (!$valid)

Die Sache mit der Überprüfung kann ich Dir mal zusammenbasteln. Wir sehen uns heute
Abend doch sowieso, oder?!
 
Hab Dir mal ne Funktion gebastelt!

PHP:
function checkRGB($rgb)
{
	(eregi('^#[0-9]{6}$',$rgb)) ? $result = TRUE : $result = FALSE;
	return $result;
}
 
Dabei fällt mir in Deinem oberen Code was auf! Den kannst Du auch noch ein wenig
optimieren. Man sollte PHP generell immer so wenig wie möglich über echo ausgeben
lassen. Da der PHP Parser / Interpreter über die Stellen im Code läuft, die von '<?php'
und '?>' eingeschlossen sind. Wenn Du jetzt die JavaScript Funktion nur aufrufen lassen
möchtest, wenn eine bestimmte Bedingung erfüllt ist, z.B. $var == 'Yves', dann solltest
Du das folgendermaßen machen:

PHP:
<body <?php if($var == 'Yevs') { echo "onload=\"dialog()\""; } ?>>


Das 'java script' ist hierbei überflüssig, da Du die Funktion 'onload()' benutzt, hierdurch
rufst Du generell nur JavaSkripts auf. Also überflüssig!

Die Variable $valid brauchst Du doch grundsätzlich nicht, wenn Du in der folgenden Be-
dingung die gleiche Abfrage machst, wie eben erklärt, also

PHP:
if($var == 'Yves' && $_POST['colourswitch']_&&_!empty($_POST['colourswitch'])

Darüber hinaus fragst Du doch $_POST['colourswitch'] schon als boolschen Wert ab - ist
$_POST[colourswitch'] gesetzt oder nicht! Von daher hattest Du Dir Deine erste Frage
schon selbst beantwortet. :D
 
Hi, erstmal vielen Dank. Alles klar bei dir? Bin immer noch nicht weiter mit der Pixelschubbserei ;)=


Frage ich die Variable $colourswitch tatsächlich strikt ab? Ich dachte mit isset($colourswitch) prüfe ich nur ob diese vorhanden ist, unabhängig ihres Datentyps.

Deine Funktion kam mir auch in den Sinn. Aber in einem anderen Forum wurde herausgefunden, das so zb auch #FFCC000 möglich ist.

Dort wurde folgendes vorgeschlagen:

PHP:
function check_hex($hex) {

____return preg_match("/^#([0-9a-fA-F]{6})?$/", $hex);

}


Was die Code Optimierung angeht… darf ich das trotzdem so machen? Weil ich finde es übersichtlicher :D


Vielen Dank


Liebe Grüße

Yves
 
Natürlich kannst Du das so lassen, anders ist es aber eleganter gelöst. :D

Hm ... was ich bei meiner Funktion vergessen habe, ist die Abfrage der Buchstaben A-F,
aber das was Du da schreibst ist nicht richtig. Es werden nur 6 Zeichen plus die Raute
akzeptiert - 7 Zeichen nicht!
 
Zurück
Oben Unten