Hinweis: Das Forum zieht um! Um keine Datenverluste zu haben, schalten wir zwecks Übernahme der Daten das Forum am Sonntag, den 24.04.2016 um ca. 21:00 Uhr offline und passen anschliessend die DNS-Einträge an. www.php-rocks.de wird euch dann nach den Aktualisierungen der DNS-Server wieder wie gewohnt uneingeschränkt zur Verfügung stehen. Danke für euer Verständnis!
Im Chrome und im Firefox schaut alles gleich aus, genau wie ich es möchte.
Der IE11 verschiebt den Button unten leicht nach rechts und das Dropdown-Menü öffnet sich nicht schön nach unten sondern hüpft irgendwie mittig nach oben (schwer zu beschreiben) .
Weiß jemand wie ich das im IE vernünftig anpassen kann?
ich möchte Deine Aufforderung gerne annehmen und hier bin ich.
Mein Text im Forum für Webmaster war folgender:
Zum besseren Verständnis muss ich jetzt doch etwas mehr ausführen.
Ich habe die Webseite zur Betreuung Ende Oktober 2016 übernommen, nachdem, wie erwähnt, der Hoster sie gesperrt hatte. Zu dieser Zeit lief auf dem Webserver eine Joomla-Website. Die Software war jahrelang nicht upgedated worden! In den Dateien waren u.a. etwa 500 Troyaner!!
Ich habe eine neue Webseite selbst in HTML und CSS gebaut und mit deiner Hilfe, Arne, auch das Webcam-Problem gelöst. Diese Website ist aktuell auf dem Webserver installiert. Sie beinhaltet neben dem von mir erstellten HTML- und CSS-Code zwei Formulare von http://www.gratis-kontaktformular.de und ein Suchformular von Google und die folgenden Scripte
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.menubutton').click(function() {
$('nav').slideToggle('slow');
});
});
</script>
Der neuerliche Angriff ist für mich überraschend, weil jetzt PHP-Dateien mit Datum 16.10.2016 zum Vorschein kommen, obwohl ich Ende Oktober 2016 alles aufgeräumt habe.
Ich benutze für die Übertragung der Dateien auf den Webserver die Software PSFtp.
Zitat von Arne: Generell solltest Du - wie bereits getan - alle FTP-Passwörter neu setzen ( "sichere" Passwörter! ) und je nachdem, welche Serversoftware Du einsetzt etwas wie die Postausganskontrolle ( Plesk ) einsetzen. Damit kannst Du auf Domain und Postfach Ebene eingrenzen, wie viele Mails stdl. versendet werden dürfen. Wird die Grenze überschritten, bekommst Du eine Meldung und kannst weitere ausgehende Mails für den Verursacher ( Domain oder Postfach ) autom. sperren.
Kannst du das Thema Postausgangskontrolle etwas näher beschreiben?
Zitat von Arne:Dazu könnte ich Dir ein kleines Script zur Verfügung stellen, mit dem Du alle vhosts ( sollte es mehrere geben ) auf dem Server scannen kannst und erhältst eine Liste mit allen Verzeichnissen und Dateien, die aktuell vorhanden sind. Ich habe das für mich erweitert, so dass ich alle zwei Stunden eine Meldung bekommen würde, wenn Dateien dazu gekommen sind. Bestimmte Dateiendungen kann ich dabei ausschliessen, um nicht permanent mich nur um Warnungen kümmern zu müssen.
Ich soll mir 3 "Layouts" ausdenken in denen ich DIVs verschachteln soll.
Nun habe ich mir wohl etwas zu schweres ausgedacht .
Ich wollte eine umgedrehte Pyramide mit DIVs bauen in denen jeweils 2 weitere DIVs ineinander verschachtelt sind.
Das habe ich sogar hinbekommen .
Der innerste DIV (im Code .container8) reagiert aber leider auf keine vertikalen Margin-Befehle.
Ich möchte den schön mittig haben, wie der DIV in dem er steckt (.container7).
Hab alle möglichen Schreibweisen versucht, sogar mit padding bei Container7 habe ich es versucht (da sprengt es das Layout).
Hallo @all,
the common way to create self-executing php scripts is to use Phar.
Auf manchen shared-hosts oder älteren compilationen steht dieses nicht zur Verfügung.
Deshalb möchte ich meine Alternative präsentieren, sie basiert auf dem MIME 1.0 protokoll bzw. dem multipart/mixed Content-Type.
Das Script ist auch als gist verfügbar und befindet sich auch im Anhang dieses Postings.
Das frdl/webfan package dient als Live Example Beispiel: http://www.webfan.de/install/
Wie das .phar Format auch, macht das script Gebrauch von der Anweisung
PHP-Code:
__halt_compiler
Wenn dieser Token in einer Datei vorkommt, wird alles nachfolgende vom php-compiler ignoriert.
Dies erlaubt uns an eine .php Datei beliebiege Daten anzuhägen ohne einen parse error zu verursachen.
Die php Constant
PHP-Code:
__COMPILER_HALT_OFFSET__
hilft uns dabei die Daten, bzw. die Position der angehängten Daten in der php Datei zu finden.
Unser script speichert die Daten im Anhang als MIME mutlipart/mixed Format.
Die Dateien im ersten multipart mit dem Content-Type
@ToDo: Der MIME-Parser ist derzeit nicht memory optimiert und es kann bei größeren Anhängen das memory limit überschritten werden. Es sollten zunächst nur die Datei-Header eingelesen werden um dies zu vermeiden.
PHP-Code:
<?php /** * Copyright (c) 2017, Till Wehowski * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of frdl/webfan nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY frdl/webfan ''AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL frdl/webfan BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * */ namespace webfan; use frdl; define('___BLOCK_WEBFAN_MIME_VM_RUNNING_STUB___', true);
/** * https://github.com/Riverline/multipart-parser * * Class Part * @package Riverline\MultiPartParser * * Copyright (c) 2015-2016 Romain Cambien * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the Software * is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * - edited by webfan.de */
class MimeStub { const NS = __NAMESPACE__; const DS = DIRECTORY_SEPARATOR; const FILE = __FILE__; const DIR = __DIR__;
public function __set($name, $value) { $trace = debug_backtrace(); trigger_error( 'Undefined property via __set(): ' . $name . ' in ' . $trace[0]['file'] . ' on line ' . $trace[0]['line'], E_USER_NOTICE);
return null; }
public function __get($name) { // echo "Getting '$name'\n"; // if (array_key_exists($name, $this->data)) { // return $this->data[$name]; // } switch($name){ case 'parent': return $this->_parent; break; case 'id': return $this->_id; break; case 'nextChild': $this->_p=++$this->_p; if($this->_p >= count($this->parts)/* -1*/)return false; return (is_array($this->parts)) ? $this->parts[$this->_p] : null; break; case 'next': return $this->nextChild; break; case 'rewind': $this->_p=-1; return $this; case 'root': if(null === $this->parent || (get_class($this->parent) !== get_class($this)))return $this; return $this->parent->root; break; case 'isRoot': return ($this->root->id === $this->id) ? true : false; break; case 'lastChild': return (is_array($this->parts)) ? $this->parts[count($this->parts)-1] : null; break; case 'firstChild': return (is_array($this->parts) && isset($this->parts[0])) ? $this->parts[0] : null; break; default: return null; break; }
$trace = debug_backtrace(); trigger_error( 'Undefined property via __get(): ' . $name . ' in ' . $trace[0]['file'] . ' on line ' . $trace[0]['line'], E_USER_NOTICE);
return null; } public function __call($name, $arguments) {
// Note: value of $name is case sensitive. $trace = debug_backtrace(); trigger_error( 'Undefined property via __call(): ' . $name . ' in ' . $trace[0]['file'] . ' on line ' . $trace[0]['line'], E_USER_NOTICE);
return null; }
/** As of PHP 5.3.0 */ public static function __callStatic($name, $arguments) { if('run'===$name){ return call_user_func_array('run', $arguments); }
if('vm'===$name){ if(0===count($arguments)){ return new MimeVM(); }elseif(1===count($arguments)){ return new MimeVM($arguments[0]); }elseif(2===count($arguments)){ return new MimeVM($arguments[0], $arguments[1]); } // return call_user_func_array(array(webfan\MimeVM, '__construct'), $arguments); return new MimeVM(); }
if('create'===$name){ if(!isset($arguments[0]))$arguments[0]=''; if(!isset($arguments[1]))$arguments[1]=null; return new self($arguments[0], $arguments[1]); } // Note: value of $name is case sensitive. $trace = debug_backtrace(); trigger_error( 'Undefined property via __callStatic(): ' . $name . ' in ' . $trace[0]['file'] . ' on line ' . $trace[0]['line'], E_USER_NOTICE);
return null; }
public function getContentType() { $this->contentType=$this->getMimeType(); return $this->contentType; }
/** * @param string $input A base64 encoded string * * @return string A decoded string */ public static function urlsafeB64Decode($input) { $remainder = strlen($input) % 4; if ($remainder) { $padlen = 4 - $remainder; $input .= str_repeat('=', $padlen); } return base64_decode(strtr($input, '-_', '+/')); }
/** * @param string $input Anything really * * @return string The base64 encode of what you passed in */ public static function urlsafeB64Encode($input) { return str_replace('=', '', strtr(base64_encode($input), '+/', '-_')); }
public static function strip_body($s,$s1,$s2=false,$offset=0, $_trim = true) { /* * http://php.net/manual/en/function.strpos.php#75146 */
/** * @return bool */ public function isFile() { return !is_null($this->getFileName()); }
/** * @return Part[] * @throws \LogicException if is not multipart */ public function getParts() { if ($this->isMultiPart()) { return $this->parts; } else { throw new \LogicException("Not MultiPart content, there aren't any parts"); } }
/** * @param string $name * @return Part[] * @throws \LogicException if is not multipart */ public function getPartsByName($name) { $parts = array();
foreach ($this->getParts() as $part) { if ($part->getName() === $name) { $parts[] = $part; } }
return $parts; } }
__halt_compiler();Mime-Version: 1.0 Content-Type: multipart/mixed;boundary=hoHoBundary12344dh To: test@example.com
<h1>Test</h1> <p>This is the <strong>HTML</strong> version of the message.</p>
--EVGuDPPT Content-Type: text/plain;charset=utf-8
This is the plain text version of the message. --EVGuDPPT Content-Type: multipart/related;boundary=4444EVGuDPPT Content-Disposition: php ;filename="$__FILE__/stub.zip";name="archive stub.zip"
Ich mache mir glaube ich das Leben gerade selbst schwer.
Im Prinzip eine einfache Aufgabe, ich möchte Verkaufszahlen eines bestimmten Artikels ermitteln:
Code:
SELECT sum(vp.Menge)
FROM Verkaufspositionen vp
WHERE vp.Artikelnummer = '0815'
Nun gibt es allerdings Handelsstücklisten, die sich aus Positionen einzelner Artikel zusammensetzen.
Ich muss nun alle Handelsstücklisten-Verkäufe berücksichtigen, in denen der Artikel 0815 enthalten ist:
Code:
SELECT sum(vp.Menge)
FROM Verkaufspositionen vp
WHERE vp.Artikelnummer in ( SELECT Stueckliste FROM Stuecklisten WHERE element='0815' )
Das könnte man natürlich einfach zusammenführen:
Code:
SELECT sum(vp.Menge)
FROM Verkaufspositionen vp
WHERE vp.Artikelnummer = '0815'
OR vp.Artikelnummer in ( SELECT Stueckliste FROM Stuecklisten WHERE element='0815' )
Allerdings kann die 0815 auch mit Menge > 1 in einer Stückliste vorhanden sein.
Wenn also die 0815 in der Stückliste A 2x vorkommt, muss natürlich auch die verkaufte Menge der Stückliste mit 2 multipliziert werden.
Und hier stehe ich grad auf dem Schlauch, weil ich nicht drauf komme, wie ich das zusammenfassen soll.
Hallo,
kann mir jemand einen Link oder eine Anleitung posten, wie ich unter win8.1 einen einzelnen DNS Eintrag hinzufügen kann, also
host.tld : IP:port
Ich habe einen server im lokalen netzwerk und möchte auf seinen httpd statt ip:port mit einem hostnamen.
Geht das auch vielleicht Browserseitig?
Der Host sollte bereits auf dem Server eingerichtet sein.
Hallo,
ich möchte mit js, wenn möglich mit XMLHttpRequest das FTP Protokoll verwenden.
In einem Forum bin ich auf einen Post gestoßen nachdem, wie die spec auch sagt(?), XMLHttpRequest zwar ftp (und auch andere Protokolle) unterstützt, es aber "in der Realität irgendwie nicht gehen würde".
Nun, ich werde es als nächstes mal einfach selbst ausprobieren... (melde mich bald wenn ich weiter bin)
Da ich aber im Netz überhaupt kein Code Beispiel dazu gefunden habe, stelle ich hier mal die Frage ob jemand schon mehr dazu sagen kann?
Ich wollte mich kurz vorstellen bevor ich demnächst um Hilfe bettel .
Mein Name ist Dennis, bin 34 Jahre alt und versuche gerade HTML5 und CSS3 zu lernen.
Ich möchte später gerne einmal Web-Templates erstellen und gratis anbieten, einfach als Hobby.
Sobald das mit HTML und CSS funktioniert möchte ich gerne PHP lernen (obwohl das schon recht schwer ausschaut).
Je nachdem wie schnell ich meine Lern-DVD durch habe und hoffentlich auch verstehe, werde ich hier die nächsten Tage/Wochen mal meine selbst gebaute Internetseite vorstellen .
Das scheint mir ein recht nettes Forum zu sein, hab viele mal probegelesen und der Umgangston hier hat mir auf Anhieb gefallen.
Ich habe mich früher schon mal mit dem Thema befasst aber bin damals nicht dran geblieben.
Das wird dieses Mal aber anders.
Klappt aber irgendwie nicht (mehr).
Und gefällt mir auch noch überhaupt nicht, da ich die gleiche Klasse auch für andere Daten verwende bei denen theorertisch das str_replace Fehler verursachen könnte.
EDIT:
Das json_decode funktioniert, der Fehler tritt nur auf wenn aus dem cache.
Ich habe das str_replace vom php code entfernt und es versucht mit