Verbesserung Gefragt

03/27/2013 00:17 Mr.Zoey#1
Code:
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Link Adresse(.php)</h1>
<form method="POST" action="">
<input name="a" type="text"><br>
<input name="submit" type="submit" value="Auslesen">
</form>
<?php
$a = $_POST['a'];
$plus = show_source("$a");
$minus = $a-$b;

?>
<h2>Ergebnis:</h2>
<?php echo $plus; ?>

</body>
</html>
Wollte mal wissen ob ich was besser machen kann ?
Ich bin noch neu im Web-Dev und weiß genau das es schrottig geschrieben ist
aber wo raus muss ich achten und so weiter ^^
03/27/2013 10:02 PseudoPsycho#2
Wenn es das bewirken soll, was ich glaube
(nämlich ein Formular anzeigen, wo man eine Zahl eingibt. Und nach dem Versenden das Ergebnis irgendwelcher Berechnungen anzeigen (wo auch immer $b auf einmal herkommt)), dann rate ich dir dazu, dir ein Buch zu kaufen und das durchzuarbeiten oder wenigstens ein Tutorial. Hier bist du jedenfalls falsch, sry.

Und damit du die Tutorials etwas schneller findest: [Only registered and activated users can see links. Click Here To Register...]
03/27/2013 12:44 Mikesch01#3
PHP Code:
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Link Adresse(.php)</h1>
<form method="POST" action="">
<input name="a" type="text"><br>
<input name="submit" type="submit" value="Auslesen">
</form>
<?php
$a 
$_POST['a']; //zur Sicherheit würde ich hier sämtliche HTML-Sonderzeichen escapen -> htmlentities($_POST['a'])
$plus show_source($a); //Anführungszeichen müssen nicht gemacht werden, wenn du eine Variable verwendest, die einen String speichert.
$minus $a-$b//?! Was soll das sein?^^

?>
<h2>Ergebnis:</h2>
<?php echo $plus?>

</body>
</html>
Naja, der Zweck ist natürlich sehr beschränkt und sollte eigentlich so auf keinen Fall auf einen Webspace geladen werden (sonst liest dir jeder dein schönes Script aus ;)).

Im Großen und Ganzen OK, aber da eigentlich kaum Code vorhanden ist, kann man auch schwer sagen, was du besser machen solltest.
03/27/2013 15:13 MrPuschel#4
Wenn wir schon mal dabei sind, gewöhn dir möglichst schnell an deinen Variablen und Elementen möglichst aussagekräftige Namen zu geben. Am besten in CamelCase Notation. Die Länge ist dabei nicht so wichtig. Das sähe Beispielsweise so aus:

HTML Code:
<html>
<head>
<title>Test</title>
</head>
<body>

<h1>Link Adresse(.php)</h1>
<form method="POST" action="">
<input name="ersteZahl" type="text"><br>
<input name="submit" type="submit" value="Auslesen">
</form>

<?php
$ersteZahl = $_POST['ersteZahl']; 
$ergebnisPlus = show_source($myNumber); 
$ergebnisMinus = $ersteZahl - $zweiteZahl; 
?>

<h2>Ergebnis:</h2>
<?php echo $ergebnisPlus; ?>
</body>
</html>
Das hilft 1. Dir beim programmieren. 2. Anderen wenn du mal hier im Forum Hilfe suchst. Überleg dir ausserdem ob du durchgehend Englische oder Deutsche Variablen und Methoden Namen verwenden möchtest. Möglichst nicht mischen. Hat keinen technischen Grund, ist nur eine Stilnote ;)
03/27/2013 16:16 Synatex#5
Da du hier ja eindeutig mit Zahlen rechnest wäre es für PHP cool zu wissen das es auch wirklich zahlen sind. Dann wird nämlich unnötiger Kram, welcher Sicherheitstechnisch relevant ist, gar nicht erst mit benutzt. Das stellst du an in dem du vor die Variablen ein einfaches (int) packst. Beispiel:

PHP Code:
<?php

$a 
= (int)$_POST['ersteZahl'];

?>
03/27/2013 17:35 PseudoPsycho#6
Quote:
Originally Posted by Synatex View Post
Das stellst du an in dem du vor die Variablen ein einfaches (int) packst.
Kann zu Problemen führen... Ich persönlich würd' eher $a=intval($_POST['ersteZahl']); schreiben. Bzw. floatval(), wenn's 'ne Fließkommazahl ist.
03/27/2013 19:39 Synatex#7
Welches Problem denn Beispielsweise? Intval() ist ne Funktion zum typecasten und int() ist das direkte Typecasten. Abgesehn davon das man bei Intval() eine Basis angeben kann sind keine Unterschiede vorhanden und es wird in 99,99% der Ressourcen im Web als schneller und effizienter empfohlen. Was spricht also dagegen?
03/27/2013 19:48 Mikesch01#8
Quote:
Originally Posted by Synatex View Post
... es wird in 99,99% der Ressourcen im Web als schneller und effizienter empfohlen. Was spricht also dagegen?
*zustimm* [Only registered and activated users can see links. Click Here To Register...]

Sorry für Off-Topic, musste aber mal geklärt werden^^
03/29/2013 05:11 MrPuschel#9
Ich muss mal die Spaßbremse spielen.

PHP ist eine Sprache die [Only registered and activated users can see links. Click Here To Register...] beherscht. Zwangsweise, denn PHP kennt überhaupt keine explizite Definition. In PHP passieren andauernd on-the-fly-conversions, wenn dies Notwendig ist. PHP prüft anhand der Operanden und der verwendeten Operatoren wie die Operanden evaluiert werden und welcher Typ zurückgegeben wird. Beispiel:integer + float gibt float zurück. Mit dem Cast nehmt ihr PHP diese Arbeit ab.

(Ein cast ist keine Umwandlung, das würdet ihr mit settype() machen. Mit einem cast teilt ihr PHP nur mit wie der Operand behandelt werden soll).

integer + float ist teurer als (float)a + float. Um ein paar Mikrosekunden. Und jetzt fragt euch selbst wie oft ihr schon Anwendungen mit ein paar Millionen Iterationen zur Laufzeit hattet.

Ich kenne kein praktisches Beispiel in dem ein expliziter cast mit PHP notwendig wäre. Es ist richtig das PHP manchmal unerwartete Ergebnisse produziert, der Fehler liegt aber i.d.R. im impliziten Code. Der cast ist also ein workaround. Auch die Lesbarkeit wird von einem (int) cast nicht erhöht. Der Typ einer Variable sollte sich (für den Leser) aus Namen, Kontext und dem PHPDoc ergeben.

Mir ist bewusst das Ihr wisst was ihr tut. Das tut ihr sogar aus den richtigen Gründen, aber bedenkt das PHP nicht C ist und das ein bischen gesunder Menschenverstand nie schadet bevor man sich mit Millisekunden bewirft. Und am wichtigsten, nicht mit casts auf Neulinge zielen ;3
03/29/2013 09:51 Synatex#10
Quote:
Ich kenne kein praktisches Beispiel in dem ein expliziter cast mit PHP notwendig wäre.
Ich hatte es im oberen Beispiel vorgeschlagen um den Wert zu escapen. Wenn man weiß das die Anwendung so oder so mit einem Integer arbeiten soll brauch man sich doch keine unnötige Arbeit machen und Funktionen wie is_int() oder htmlspecialchars() drauf anwenden wenn einem das typecasting die Arbeit abnimmt.

Das mit den Millisekunden und der Verarbeitung kam nur nach der Info von PseudoPsycho hinzu.
03/29/2013 12:38 PseudoPsycho#11
Quote:
Originally Posted by Synatex View Post
Das mit den Millisekunden und der Verarbeitung kam nur nach der Info von PseudoPsycho hinzu.
Jup. Meine, da irgendwo mal gelesen zu haben, dass (int) $x recht fehleranfällig sei. Wahrscheinlich hab' ich das einfach mit $x+=0, oder so, verwechselt.
Naja, auf die Art wieder 'was dazugelernt (auch wenn's auf die Millisekunden nur im Großen und Ganzen überhaupt ankommt).

Jetzt wieder back to topic? :)