kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: Scrollbare Table Cell

    geschrieben von timebandit

    Tabellen sind im Responsive Webdesign - und das ist State of the Art - eine echte Herausforderung. Ich habe hier https://timebandit.lima-city.de/mehralsnurradio/ eine Beispieltabelle mit scrollbaren Zellen erstellt. Für mobile Geräte eignet sich diese Lösung allerdings nicht.

    lg,
    timebandit
  • in: Erfahrungsbericht: Passwortschutz mit htaccess im Freespace

    geschrieben von timebandit

    Hallo joergreven,

    joergreven schrieb:
    Vielleicht liegt das Problem auch gar nicht bei mir - laut Statusseite hat der Freespace Teilausfälle.

    Wenn dem so wäre, dann müsste deine site auch down sein.
    Meine Testseiten sind auch im Free-Webspace. Das Resultat aus .htaccess und Passwortgenerator findest du hier:
    https://timebandit.lima-city.de/joergreven/geheim/
    Zur Vereinfachung und nur zu Testzwecken die Zugangsdaten:
    Benutzername: admin und Passwort:admin

    lg
    timebandit
  • in: Erfahrungsbericht: Passwortschutz mit htaccess im Freespace

    geschrieben von timebandit

    Hallo joergreven,
    joergreven schrieb:
    Ich glaube daher, das Problem liegt beim Passwort.
    ..


    tchiarcos schrieb:
    Hi,

    nix für ungut, aber das ist die wohl älteste Methode ein Verzeichnis zu schützen, allerdings nicht die eleganteste!

    Welche eleganteren Methoden kennst du?

    Ja, es gibt zahlreiche Tutorials. Meistens scheitern die User am Passwort. Unterschiedliche Server verwenden auch unterschiedliche Verschlüsselungsmethoden. Für Lima-City Server habe ich einen Passwortgenerator gebastelt.
    https://timebandit.lima-city.de/joergreven/

    lg,
    timebandit

  • in: Code darstellen in HTML

    geschrieben von timebandit

    Hallo,

    ohne Codeschnipsel muss ich raten. In der DB befinden sich HTML-Dokumente oder Teile davon.
    Diese werden in PHP-Variablen gepackt und ausgegeben. Wenn dem so ist, dann bietet sich htmlentities an.Etwa so htmlentities($db_wert).

    lg
    timebandit
  • in: Kostenlosen Webspace bei limy-city

    geschrieben von timebandit

    Hallo ubuntuserver-revenge,

    ubuntuserver-revenge schrieb:
    ...
    Wie beantragt man denn Code für den kostenlosen Wbspace bei Lima-city?

    In der Hilfe findest du folgendes:
    Einladungs-Codes für den kostenlosen Webspace
    Der kostenlose Webspace ist derzeit nur für Kunden, welche dafür eine Einladung haben, verfügbar. Eingeladene Kunden können in der Verwaltung ihren Einladungs-Code eingeben und erhalten Zugang zum kostenlosen Webspace.

    Einladungs-Codes sind verfügbar über:


    registrierte Kursleiter / Nutzer von unseren Bildungs-Lösungen
    lima-city Hosting-Partner

    Vielleich hilft dir diese Seite mit einem Werbebanner für lima-city weiter. Ich bin mir aber nicht sicher ob das bei dir funktioniert (bist ja bereits ein registrierter user).
    https://timebandit.lima-city.de

    lg
    timebandit

    [edit] Habe mich noch ein wenig umgeschaut und in den Blogs das gefunden: https://blog.lima-city.de/2019/07/updates-kw29-2/
    Zudem wurde die Freischaltung des kostenlosen Webspace verändert. Seit Dezember haben wir einen Einladungscode verlangt, damit der kostenlose Webspace auf neu registrierten Accounts aktiviert werden konnte. Das ist nun durch eine Anmeldung mit Freischaltung ersetzt worden.
  • in: Hilfe gesucht.

    geschrieben von timebandit

    Hallo blogvvard,

    der gewünschte Code:
    $currDir=__DIR__.'/content/';
    foreach (scandir($currDir) as $key => $value){
    	if (!in_array($value,array(".","..")) && !is_dir($dir . DIRECTORY_SEPARATOR . $value)) //Ausschluss der Unterverzeichnisse
          {
             if (is_file($currDir."/".$value) && strpos($value,'.txt')!==false)  //Wenn der &&-Operator weggelassen wird werden alle Dateien erfasst 
             {$file=$currDir."/".$value;
    /***************************************************************************************************/         
    			$opfile = fopen($file, 'r'); // der teil ist unverändert macht kopfschmerz bei 
    			$post_title = trim(fgets($opfile),'#');//einer hohen dateizahl
    			fclose($opfile);//nicht gerade performant
    /***************************************************************************************************/ 
    			$post_title=ucfirst(trim($post_title));//alle dateinamen erhalten Großbuchstaben wg sortierbarkeit
    			$basename=basename($value,".txt");
    			$basenarr[$basename]=$post_title;//Dateinamen als Schlüssel;Blogtitel als Werte
    			
             }
          }
    }
    if(isset($basenarr)){
    	krsort($basenarr); //aufsteigend die Keys sortieren -->ksort ist das Gegenstück	
         foreach($basenarr as $key => $v){$content .= '<h2 class="list-title"><a href="'.$base_url.'?post='.$key.'">'.$key.' - '.$v.'</a></h2>';}
         echo "$content";}
    	 else {echo "keine Dateien gefunden";}

    Einzufügen in der letzten else-Anweisung. Achte auf die geschweiften Klammern PHP verzeiht da keinen Fehler und antwortet sonst mit einem 503 Status-Code (Internal Server Error). Am besten du löscht den Inhalt zwischen den geschweiften Klammern, sodass nur noch else{// Blog main page - list all posts } übrig ist.

    Nachtrag: Ich habe dir zwar bei einem konkreten Problem geholfen, aber ohne die Überzeugung Gutes getan zu haben. 8 Blogeinträge sind nicht viel, wie sieht es bei 100 und mehr aus? Der User wird schon an einem Desktop das Scrollen verfluchen mit einen Smartphone wischt er sich die Finger wund.
    Du wirst in deinen Blogs ohne Bilder auskommen müssen...etc.

    lg
    timebandit
  • in: Hilfe gesucht.

    geschrieben von timebandit

    Hallo blogvvard,

    nach langem Zögern und mit einigen Bauchschmerzen habe ich für dich einen Lösungsweg erstellt.

    https://timebandit.lima-city.de/blogvvard/

    lg
    timebandit
  • in: Unsichere Verbindung zur Homepage

    geschrieben von timebandit

    Hallo terrafertile,

    meine .htaccess war nur als Beispiel gedacht und zufällig.
    Tatsächlich wird bei der genannten Domain die non-www Variante bevorzugt
    <link rel="canonical" href="https://tamara-martin.ch/wp/"/>

    terrafertile schrieb:
    Nuetzt aber eh nichts.
    Das sehe ich auch so.
    Die Grundkonstruktion der website ist fehlerhaft.
    Ein Test bei Google https://search.google.com/test/mobile-friendly zeigt, dass keine Indizierung erfolgen wird.
    Der PageSpeed ist unterirdisch
    https://developers.google.com/speed/pagespeed/insights/

    Die Website kann, falls keine gravierenden Änderungen vorgenommen werden, niemals in den SERPs prominent erscheinen.

    lg,
    timebandit
  • in: Unsichere Verbindung zur Homepage

    geschrieben von timebandit

    Hallo Internetplattform,

    Domains mit ssl-Verschlüsselung haben immer 4 Varianten.
    http://domain
    http://www.domain
    https://domain
    https://www.domain
    Üblicherweise wird dieses Problem via .htaccess gelöst.
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    RewriteCond %{HTTP_HOST} ^beispiel\.de$ [NC] 
    RewriteRule ^(.*)$ https://www.beispiel.de/$1 [L,R=301]
    In diesem Beispiel werden 3 Varianten auf https;//www.beispiel.de weitergeleitet.
    Du kannst das hier https://www.asmaro.de/tools/http-response.php testen.
    Beachte die Unterschiede im HTTP Response zwischen tamara-martin.ch und tamara-martin.ch/wp.

    Das Problem mit "mixed content" besteht weiterhin. Du findest im Quelltext beim span-tag <span class="et_pb_image_wrap "> eine Ursache
    <span class="et_pb_image_wrap "><img src="http://tamara-martin.ch/wp/wp-content/uploads/2020/04/Bild-von-Tatutati-auf-Pixabay-2-2.png"...

    Die Website deiner Arbeiskollegin dient wohl auch kommerziellen Zwecken.
    Eine Anmeldung in Googles Search Console ist erfolgt und die Property bestätigt.
    Die Website ist aber nicht im Index. Ein Seitenabruf (site:tamara-martin.ch) zeigt ein leeres Ergebnis.

    Verzichte auf den iframe, der ist für Inhalte fremder Webseiten (z. B. Google Maps, YouTube) gedacht.

    lg,
    timebandit
  • in: PHP Script verzögert ausführen

    geschrieben von timebandit

    horstexplorer schrieb:
    Das könnte sich doch mit JS lösen lassen.

    Jein. Mit JS bekommst du keinen direkten Zugriff auf den Server.
    Mit AJAX kann man aber einen Request an ein PHP-Script absetzen.

    etwa innerhalb eines JS-Scripts mit z. B. timeout() Funktion:
    // nur grob schematisch:
    var xmlhttp = new XMLHttpRequest(),myJSON=JSON.stringify(irgend welche daten);        
    xmlhttp.open("POST","da-sollen-die-daten-hin.php",true);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded",'Cache-Control', 'no-cache');
    xmlhttp.send("request="+myJSON);
    --------------------------------------------------------------------------------------
    da-sollen-die-daten-hin.php
    <? 
    $obj = json_decode($_POST["request"], false);
    // schreib irgendetwas in die db
    ?>


    lg,
    timebandit
  • in: Suchseitenoptimierung

    geschrieben von timebandit

    terrafertile schrieb:
    Also, ich habe meine Seite bei Google Search Console angemeldet. Obwoht meine Seite (terrafertile.gr) ueber sehr wenig Inhalt verfuegt ( habe noch nicht mal Produkte aufgelistet), bin ich bei bestimmten und den von mir gewuenschten Suchanfragen bei den Ergebnissen weit oben. Sucht man z.B. bei Google nach Olive Oil Sitia, komme ich noch vor Firmen, die schon viel laenger bestehen und deren Seiten ueber viel Inhalt verfuegen.


    Wenn ich deine Suchbegriffe (Olive Oil Sitia) bei Google eingebe, erscheint deine Website bei mir auf Seite 5 in den SERPs.
    Beachte, dass die große Suchmaschine Suchergebnisse personalisiert und du möglicherweise etwas anderes ausgespielt bekommst als der Rest der Welt.
    Die Search Console ist ein must have eines jeden Webmasters. Eine Anmeldung bei My Business ist mehr als anzuraten. Google Analytics hilft ebenso.
    Wenn ich mir das Ranking von Vergleichsportalen aber allgemein ansehe, so bemerke ich, dass die meisten davon in den Keller rauschen. Die Zeiten für eine gute Sichtbarkeit bei Google ohne gezielte Werbekampagnien scheinen vorbei zu sein.
    rainbow22 schrieb:
    Wie kann ich eine Suchseitenoptimierung am besten umsetzen? Bin über alle Ratschläge dankbar! :)

    LG,

    Tina

    SEO ist ein sehr großes Wissensgebiet. Wenn du deine Website ohne SEO-Experten nach oben bringen willst, dann brauchst du viel Zeit, Geduld und einen absoluten Lernwillen. Der Google-Algorithmus besteht aus mehr als 200 Einzelbestandteilen, die eine unterschiedliche Gewichtung haben. Eine erste Lektüre zum Thema Suchmaschinenoptimierung findest du hier: https://support.google.com/webmasters/answer/7451184?hl=de
    Halte dich an die Richtlinien für Webmaster und hüte dich aber vor Überoptimierung. Die Penalties von Google können gravierend sein.

    Lg
    timebandit


  • in: PHP, MSQL Update + variable

    geschrieben von timebandit

    hallo nusus
    Mit einem normalen Wert funktioniert es z.b coins = coins +1. Aber es funktioniert nicht wenn ich die eins durch eine Variable ersetzte.

    Eine Variable kann in PHP vieles repräsentieren. Eine Addition wird immer scheitern, weil PHP nicht unterscheiden kann ob es sich bei einer Variablen um einen Zahlenwert, oder einen String, oder ein Array handelt.
    Die PHP-Funktionen is_numeric und/oder intval werden dein Problem lösen.
    http://php.net/manual/de/function.is-numeric.php
  • in: HTML-Tags lesen und bearbeiten

    geschrieben von timebandit

    strange schrieb:

    Ganz einfach, DOM ist Overhead Central. Da ist man mit REGEX and klassischen str_replace() weitaus besser bedient. Wesentlich flexibler und weniger Overhead wenn man sich die Zeit nimmt das ganze richtig zusammen zu tüfteln.

    Wo Du aber auf jeden Fall recht hast, das explode/implode der absolut falsche ansatz ist.

    In oruam19's Beitrag 'semantischer-fehler-in-einem-php-skript' habe ich mich auch gegen explode und implode ausgesprochen und für eine andere Lösung plädiert. Das Thema beschäftigte mich aber weiterhin. Der erste Gedanke war natürlich preg_match und/oder preg_match_all zu verwenden. Das Problem ist aber nicht Buttons in <td>-Tags zu quetschen, sondern die Buttons interaktiv mit der jeweils richtigen URL zu versehen. Genau da versagen REGEX. str_replace(), substr_replace, etc...
    Auch DOM löst das Problem nicht zufriedenstellend. Neben dem Overhead müsste auch die Nodelist die alle <td>-Tags beinhaltet, weiterverarbeitet werden.Die relevanten Werte(URL) müssen den entsprechenden <button>-Tags, die an der richtigen Stelle zu plazieren sind, übergeben werden.Was ich für fehleranfällig halte.
    Kurz. Ich fiel auf das vorher von mir verteufelte explode zurück. Mit geeigneten Delimitern erhält man übersichtliche Arrays, die leicht und vorallem fehlerfrei bearbeitet werden können. Die Fahrpläne sind Original zweisprachig aus der Stadt Biel in der Schweiz. In meinem Artikel geht es im Kern um eben diese Fahrplantabelle. Aus didaktischen Gründen habe ich anfangs zwei einfachere Tabellen und explode(), implode() verwendet.
    Mindestens Beispiel 1 läßt sich mit REGEX. str_replace() oder besser mit strpos() und str_replace() einfacher lösen.
  • in: HTML-Tags lesen und bearbeiten

    geschrieben von timebandit

    Hallo Community,
    inspiriert von oruam19's Beitrag https://www.lima-city.de/thread/semantischer-fehler-in-einem-php-skript
    habe ich einen Artikel/Tutorial verfasst Im Forum tauchen immer mal wieder Fragen auf wie HTML-Tags via PHP ausgelesen bzw. bearbeitet werden können. Eine Antwort könnt ihr auf meiner noch Baustellehttps://timebandit.lima-city.de/php/tabelle.php finden.
    Dort werden exemplarisch HTML-Tabellen ausgelesen und modifiziert.,

    mfg timebandit
  • in: Interner Website Counter

    geschrieben von timebandit

    mukerbude schrieb:
    Habe in die echo Zeile mit font color die Farbe verändern können, gibt es auch eine Möglichkeit die Schriftart und Größe auf diese einfache Weise zu ändern?

    echo "<font color='#0080ff'>", ("".$count),"</font>";

    fragt

    Zunächst "font color" ist veraltet und sollte nicht mehr verwendet werden.

    entweder so: echo '<span style="color:#0080ff;font-size:XXpx;font-family:xyz;">'.$count.'</span>';
    oder mit CSS: echo '<p class="mypTag">'.$count.'</p>'; und in deinem Stylesheet die Klasse "mypTag" definieren.
  • in: Semantischer Fehler in einem PHP-Skript

    geschrieben von timebandit

    oruam19 schrieb:
    Hab's jetzt noch ein bisschen hingebogen....

    GESCHAFFT! denke ich
    Ich hab's hingekriegt, indem ich an dem $n rumgeschraubt habe

    Vielen Dank @timebandit

    Meinen Glückwunsch, @oruam19.

    Ich meine aber, dass dein Script gründlich überarbeitet werden sollte. Ein gutes Script zeichnet sich auch durch nicht zu komplizierte Wartbarkeit aus. Kommentare innerhalb von Codezeilen sind immer hilreich.
    Ich finde das Konzept(?) einen String, der ja bereits ein Tabellenformat hat, in ein bzw. mehrere Arrays zu quetschen, zu bearbeiten und dann wieder die einzelnen Arrays in Teilstrings und schließlich in einem Ausgabestring zusammenzukleben reichlich unpraktisch und fehleranfallig. Am sinnvollsten wäre imho eine Datenbankanbindung. Jedenfalls hast du für dich eine Lösung gefunden und Erfahrungen gesammmelt, wie mühsam ein Debugging von Scripts sein kann.
  • in: Semantischer Fehler in einem PHP-Skript

    geschrieben von timebandit

    Die Variable $stops ist nicht initialisiert,deshalb funktioniert das Konstrukt nicht.
    $value="<button class=\"w3-button\" 
    onclick=\"location='?line=".$ln."&station=".urlencode($stops[$n-1])."&via=".urlencode($stops[$n+1])."'\">".$value;

    Ich lasse mir hierfür noch etwas einfallen.
  • in: Semantischer Fehler in einem PHP-Skript

    geschrieben von timebandit

    Füge an den Anfang deines Scripts diese beiden Codezeilen ein:
    ini_set('display_errors', 1);
    error_reporting(E_ALL);
    und sei nicht überrascht, wenn eine lange Liste an Meldungen angezeigt wird.
    Das komplette Script kenne ich nicht, aber der Code den du gepostet hast ist voller Fehler.
    Die GET-Anweisungen funktionieren nicht, weil z.B. die Variable $stop nicht initialisiert wird.
    In meinem Nachbau wirds richtig dargestellt.
    <td><button class="w3-button" onclick="location='?station=Diamantstrasse'">Diamantstrasse </button></td>

  • in: Semantischer Fehler in einem PHP-Skript

    geschrieben von timebandit

    oruam19 schrieb:
    Guten Morgen,

    Also $out ist das, was unten an der Seite ist (unter "So sollte es aussehen"). So sollte es eben aussehen und einfach die Stationen und Linien sollten anclickbar sein (für genauere Angaben)

    Wenn du nichts findest, versuche ich es sonst mal selber...

    Ich habe dein Script mal nachgebaut natürlich ohne dein CSS.
    $inStr='<div class="w3-container w3-display-container w3-card w3-margin w3-panel"><table class="w3-table w3-centered w3-margin"><tr><td></td><th>Linie 2</th><td></td><th>Linie 4</th><td></td></tr><tr><td>Diamantstrasse</td><td>→</td><td>Bahnhof Biel</td><td>→</td><td>Nidau, Bahnhof</td></tr></table></div><div class="w3-container w3-display-container w3-card w3-margin w3-panel"><table class="w3-table w3-centered w3-margin"><tr><td></td><th>Linie 2</th><td></td><th>Linie 6</th><td></td></tr><tr><td>Diamantstrasse</td><td>→</td><td>Gurnigelstrasse</td><td>→</td><td>Nidau, Bahnhof</td></tr></table></div><div class="w3-container w3-display-container w3-card w3-margin w3-panel"><table class="w3-table w3-centered w3-margin"><tr><td></td><th>Linie 7</th><td></td><th>Linie 4</th><td></td></tr><tr><td>Diamantstrasse</td><td>→</td><td>Bahnhof Biel</td><td>→</td><td>Nidau, Bahnhof</td></tr></table></div><div class="w3-container w3-display-container w3-card w3-margin w3-panel"><table class="w3-table w3-centered w3-margin"><tr><td></td><th>Linie 7</th><td></td><th>Linie 6</th><td></td></tr><tr><td>Diamantstrasse</td><td>→</td><td>Brüggmoos</td><td>→</td><td>Nidau, Bahnhof</td></tr></table></div>	
            <div class="w3-container w3-margin w3-padding-48"><p> </p></div>';
    $n=0;
        $inStr=explode("<table class=\"w3-table w3-centered w3-margin\">",$inStr);
      foreach($inStr as $value) {//echo $value.PHP_EOL;
        	if($n>0) {
        		$table=explode("</table>",$value)[0];
        		$table_r=explode("</table>",$value)[1];
        		$tds_tmp=explode("<td>",$table);
    	    	$ths_tmp=explode("<th>",$table);
    	    	foreach($tds_tmp as $td) {
    	    		$td_tmp=explode("</td>",$td)[0];
    	    		if($td_tmp!="" &&$td_tmp!="→") $tds[]=$td_tmp;
    	    	}
    	    	foreach($ths_tmp as $th) {
    	    		$th_tmp=explode("</th>",$th)[0];
    	    		$th_tmp_r=explode("</th>",$th)[1];
    	    		$ths[]=$th_tmp;
    	    		$ths_r[]=$th_tmp_r;
    	    	}
    	    	foreach($ths as $key => $th) {
    	    		$ln=explode($linie." ",$th)[1];
    	    		$th="<button class=\"w3-button\" onclick=\"location='?line=".$ln."&station=".urlencode($tds[$key])."&via=".urlencode($tds[$key+1])."'\">".$th."</button>";
    	    		$ths_b[]=$th."</th>".$ths_r[$key];
    	    	}
    	    	$table=implode("<th>",$ths_b);
    /*  ------------------------------ Hier steckt der Fehler ----------------------------------
    	    	//$value=$table."</table>".$table_r;
    ---------------------------------------------------------------------------------------------------*/
        	}
        	$tables[]=$value;
        	$n++;
        }

    Als Verarbeitungsstring habe ich, wie von dir angegeben, die Variable $out verwendet und in $inStr umbenannt.
    Hier mein Vorschlaghttps://timebandit.lima-city.de/forum-lima/fahrplan.php
  • in: CSS hover anderes Element auswählen

    geschrieben von timebandit

    Achtung. Bei Touchscreens funktioniert hover nicht oder nur eingeschränkt.
    Gerade wenn das Design responsive sein soll ist Javascript unentbehrlich.
    Hierfür bietet sich beispielsweise das Konstrukt
    ele.onmouseover=ele.ontouch=function(){bla bla;}
    an.
  • in: Semantischer Fehler in einem PHP-Skript

    geschrieben von timebandit

    Ok, ohne Db wird es umständlicher.
    Welche Werte stehen im array $out deines Beispiels?
    $out=explode("<table class=\"w3-table w3-centered w3-margin\">",$out);

    Benutze hierfür var_dump($out) und poste die Werte. Ich werde versuchen die Tabellen nachzubauen.
  • in: Semantischer Fehler in einem PHP-Skript

    geschrieben von timebandit

    oruam19 schrieb:
    Hi Leute,
    Ich arbeite gerade an einem kleinen Projekt: http://busfahrplan-biel.tk
    Das Ziel ist einfach: einen neuen Busfahrplan für meine Stadt :) Da ich mich jedoch nicht so gut mit PHP auskenne, habe ich einen Kollegen um Unterstützung gebeten und er hat mir auch geholfen... Jedoch gibt es seit der letztes Änderung einen Fehler und mein Kollege hat gerade nicht so viel Zeit also dachte ich, ich nehme das mal selber in die Hand und frage hier.

    Also: wenn man jetzt zu der Seite navigiert, und dort z.B von Diamantstrasse nach Nidau, Bahnhof schreibt, zeigt es alle Verbindungen an, jedoch sind viele doppelt (und mehr). Je weiter man nach unten scrollt, desto mehr werden es. Also muss es wohl an irgendeiner Schleife liegen.... Zudem ist der HTML-Code ein bisschen schräg..




    Schon mal danke im Vorraus :wink:

    Bei den vielen implode und explode wird einem schon schwindelig.
    Du verwendest sicherlich eine DB. Dein Projekt lässt sich effizienter und deutlich übersichtlicher gestalten.
    Denn genau darum gehts
    Jedoch gibt es seit der letztes Änderung einen Fehler
    Gute Scripte sind leicht zu warten, was bei deinem Code offensichtlich nicht der Fall ist.
    Poste mal deine Db-Abfrage, dann wird dir sicherlich geholfen.
  • in: Div Overflow bei JS

    geschrieben von timebandit

    Eigentlich funktioniert das schon mit dem style: overflow-y: auto;
    Habe mal eine Lösung zusammengebastelt.
    https://timebandit.lima-city.de/horst.html
  • in: Wie kann ich meine Webeite sicherer machen? PHP

    geschrieben von timebandit

    fs-host schrieb:
    timebandit schrieb:
    2.) Passwörter verschlüsseln
    $passwort = 'MeinGeheimesPasswort';
    $hash = password_hash($passwort, PASSWORD_DEFAULT);http://php.net/manual/de/function.password-hash.php
    3.) Daten aus Logins und Kontaktformularen genauestens überprüfen.
    Einträge in die Datenbank und Abfragen über PDO oder mysqli.



    Achtung, Passwörter hashen ist nicht ganz so einfach, wie es klingt. Algorithmen können unsicher sein und man muss wissen, was man mit dem Salt macht etc. Zusätzlich musst du nach den neuen Bestimmungen sogar evtl. die DGSVO beachten...
    Das gilt vor allem für Kontaktformulare :)


    Und wenn du mysqli nutzt, sind prepared Statements sehr gut :thumb:


    Achtung, Passwörter hashen ist nicht ganz so einfach, wie es klingt. Algorithmen können unsicher sein und man muss wissen, was man mit dem Salt macht etc.


    Im PHP-Manual(siehe obigen Link) steht z.B.
    Warnung
    Die salt Option wurde von PHP 7.0.0 an missbilligt. Es wird nun empfohlen einfach das Salt zu verwenden, dass standardmäßig erzeugt wird.
    Achtung
    It is strongly recommended that you do not generate your own salt for this function. It will create a secure salt automatically for you if you do not specify one.
    Achtung
    As noted above, providing the salt option in PHP 7.0 will generate a deprecation warning. Support for providing a salt manually may be removed in a future PHP release.

    Wer also mit salt hantieren möchte, der proggt in der Vergangenheit.

    Zusätzlich musst du nach den neuen Bestimmungen sogar evtl. die DGSVO beachten...
    Das hat mit dem Thread nichts zu tun. Hier geht es um Server- bzw. Datenbanksicherheit und nicht um Verbraucherschutz.

    Und wenn du mysqli nutzt, sind prepared Statements sehr gut
    Da hast du absolut recht.
  • in: kann z.B. die footer Datei nicht runterladen

    geschrieben von timebandit

    Benutzt du einen MAC?
    Hier wird möglicherweise dein Problem beschrieben und gelöst.
    https://www.tiramigoof.de/de/?p=6836
    Wenn FTP-Programme nicht funktionieren, dann erzwinge den Download mit diesem Script.
    #download erzwingen
    $file = 'footer.php';
    
    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="'.basename($file).'"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        readfile($file);
        exit;
    }

    Benenne das Script "mitwasauchimmer.php". Lade die Datei in das Verzeichnis der footer.php via FTP(S).
    Öffne https://..../.... /"mitwasauchimmer.php" und dein Problem sollte gelöst sein.

  • in: PHP call api variable einfügen

    geschrieben von timebandit

    nusus schrieb:
    Ah Okay, sehe denn Fehler hatte vergessen die Variable zu setzen

    An dieser Stelle sei noch einmal erwähnt, dass zur Entwicklungszeit diese zwei Codezeilen sinnvoll sind.

    ini_set('display_errors', 1);
    error_reporting(E_ALL);]

    Sie erleichtern das Debuggen wesentlich.

    Für obiges Problem wird folgende Fehlermeldung ausgegeben.
    Notice: Undefined variable: user

    Für den Onlinebetrieb müssen diese Zeilen wieder entfernt werden.
  • in: Anmeldung per PHP

    geschrieben von timebandit

    jonas-cramer-pictures schrieb:
    Wenn ich auf meiner Website eine Anmeldung über PHP erstelle, ist es da möglich auch ohne Anmeldedaten sich anzumelden? Also welche Lücken gibt es und wie schließt man sie?

    Wie soll eine Anmeldung ohne Anmeldedaten funktionieren?
    Ein Mindestmaß an Daten ist da schon erforderlich. Oder verstehe ich da etwas falsch?
    Wenn du auf Registrierung und Login verzichten willst, dann bleiben nur Cookies als Möglichkeit übrig.
  • in: Wie kann ich meine Webeite sicherer machen? PHP

    geschrieben von timebandit

    jonas-cramer-pictures schrieb:
    ...
    Und zwar habe ich in einer anderen Website, die ich aus Schulgründen erstellt habe ziemlich viel PHP verwendet und mich würde mal interessieren wie ich das absichern kann, also das sich da keinen so schnell reinhackt.

    LG Jonas

    Deine kleine Frage ist ein großes Thema.
    Weil du leider keine konkreten Angaben darüber machst, was geschützt/abgesichert werden soll, kann ich dir nur allgemeine Antworten geben.
    1.) Dateien und Ordner schützt du am besten mit .htaccess;https://www.lima-city.de/hilfe/wie-kann-ich-ein-verzeichnis-mit-einem-passwort-schuetzen
    2.) Passwörter verschlüsseln
    $passwort = 'MeinGeheimesPasswort';
    $hash = password_hash($passwort, PASSWORD_DEFAULT);http://php.net/manual/de/function.password-hash.php
    3.) Daten aus Logins und Kontaktformularen genauestens überprüfen.
    Einträge in die Datenbank und Abfragen über PDO oder mysqli.
    4.) Dateiupload streng kontrollieren und nur eingeschränkt erlauben..
    und, und, und...

    Ausserdem: teste deine inputs auch die versteckten mit z.B.<script>alert('XSS-Attacke erfolgreich');</script>
    Öffnet sich ein popup, dann mußt du handeln. Es sollten keine Fehlermeldungen ausgegeben werden. Für potenzielle Angreifer liefern Errors wichtige Informationen.
    Entferne, falls in deinen Scripten vorhanden,
    ini_set('display_errors', 1);
        error_reporting(E_ALL);

    oder ähnliches.
  • in: Nach gelöschtem Tab automatisch zum Ursprung zurück springen

    geschrieben von timebandit

    hallo mukerbude,

    Wenn es denn funktionieren würde.

    Wenn du z.B. NoScript oder ähnliches laufen lässt, dann wird natürlich die Ausführung von Javascript blockiert.
    Im FF als Consolenmeldung:
    Content Security Policy: Die Einstellungen der Seite haben das Laden einer Ressource auf self blockiert ("script-src"). Source: call to eval() or related function blocked by CSP.

    Ohne Blocker funktioniert horstexplorers modifizierter Code.
  • in: Nach gelöschtem Tab automatisch zum Ursprung zurück springen

    geschrieben von timebandit

    Hallo horstexplorer, hallo tchab.:angel:

    warum horstexplorers "Lösung" nicht in allen Browsern funktioniert liegt an der Content-Security-Policy.

    In der PHP-Variante einfach einen header mitschicken:
    header("Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline';")
    https://timebandit.lima-city.de/newtab.php
    oder als HTML-Version einen meta-tag einfügen
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'unsafe-inline'">
    https://timebandit.lima-city.de/htmltab.html

    Aber eigentlich sollte man auf ein Öffnen von Tabs oder Fenstern verzichten.
  • in: Bereich auf mehreren Seiten unterschiedliche Farben

    geschrieben von timebandit

    Ändere deine format.css Zeile 294.

    dort steht background: steelblue;
    ändern background:linear-gradient(to right, white 0%, steelblue 100%);

    Das wird das gewünschte Ergebnis erzielen.
    Beispiele hierfür gibt es auf meiner Baustelle:https://www.timebandit.lima-city.de/css/gradient.php
  • in: Umsetzung der Datenschutzgrundverordnung

    geschrieben von timebandit

    Auf dieser Seite https://www.blogmojo.de/wordpress-plugins-dsgvo/ findet ihr eine Übersicht der WP-Plugins, die problematisch sein könnten.
  • in: Umsetzung der Datenschutzgrundverordnung

    geschrieben von timebandit

    Eine ähnliche Verunsicherung fand bei der Einführung der Impessumpflicht für Websitebetreiber im Mai 2010 statt.
    Heute wird das allgemein akzeptiert. Jetzt müssen wir unsere Webseiten mindestens mit einer Datenschutzerklärung versehen. Ein Link auf diese muß auf allen Seiten vorhanden sein.
    Seit 2016 dürfen auch Verbraucherschutzorganisationen Abmahnungen erteilen und auf Unterlassung pochen.
    Die Wahrscheinlichkeit eine Abmahnung zu erhalten ist meines Erachtens zwar gering, aber dennoch vorhanden.
    Natürlich sind diesbezüglich noch keine Urteile in der Rechtsprechung vorhanden an denen wir uns orientieren können.
    Aber es ist sicherlich besser eine Website rechtskonform aufzupeppen, denn das kann auch mehr Vertrauen bei den Usern.schaffen
    Im übrigen stimme ich der Meinung von karpfen zu.


  • in: Umsetzung der Datenschutzgrundverordnung

    geschrieben von timebandit

    timebandit schrieb:

    Ebenso verhält es sich beispielsweise bei Kontaktformularen.


    Na was ein Blödsinn! Wenn ich es nutze bin ich einverstanden und wenn ich nicht einverstanden bin nutze ich es eben nicht sondern wähle einen anderen Weg der Kontaktaufnahme!

    Typisch EU!

    Datenschutz muß aber sein. Der jüngste Skandal um Facebook zeigt das doch deutlich.
    Die neue Verordnung stärkt die schützenswerten Rechte der Nutzer. Was aber in der Praxis ein Ärgernis für den User darstellen kann, wenn überall ein Kontrollkästchen angeklickt werden soll.
    Wir als Websitebetreiber(Diensteanbieter) müssen aber auf die Neuerungen entsprechend reagieren. Leider...
  • in: Umsetzung der Datenschutzgrundverordnung

    geschrieben von timebandit

    turmfalken-nikolai schrieb:
    Habe schon versucht mich da reinzulesen aber spätestens wenn ich auf Seite 10 bin weiß ich schon nicht mehr was der Kauderwelsch auf Seite 2 bedeutet :wow:

    Diese Formulierungen in Beamtendeutsch zu verstehen geht ja fast gar nicht. Bin schließlich Elektrofachkraft und kein Jurist!

    Kein leichter Tobak, das stimmt.:confused:
    Hier die sogenannte Cookie-Richtlinie:
    Artikel 5 Absatz 3
    Die Mitgliedstaaten stellen sicher, dass die Speicherung von Informationen oder der Zugriff auf Informationen, die bereits im Endgerät eines Teilnehmers oder Nutzers gespeichert sind, nur gestattet ist, wenn der betreffende Teilnehmer oder Nutzer auf der Grundlage von klaren und umfassenden Informationen, die er gemäß der Richtlinie 95/46/EG u. a. über die Zwecke der Verarbeitung erhält, seine Einwilligung gegeben hat.

    Bisher befanden sich Hinweise, dass Cookies eingesetzt werden, entweder in der Datenschutzerklärung und/oder es wurde ein Hinweis eingeblendet.
    Das reicht jetzt nicht mehr aus. Ein Nutzer muß die Möglichkeit haben seine Einwilligung zu geben.
    Ebenso verhält es sich beispielsweise bei Kontaktformularen.
  • in: Umsetzung der Datenschutzgrundverordnung

    geschrieben von timebandit

    Die DSGVO gilt bereits seit Mai 2016. Die Frist für nationale Umsetzung beträgt meines Wissens 3 Jahre.
    In Deutschland wird die Datenschutzgrundverordnung im Mai umgesetzt.
    Es existiert die weit verbreitete Meinung, dass nur Unternehmen davon betroffen sind.
    Das ist aber tatsächlich nicht der Fall.
  • in: Umsetzung der Datenschutzgrundverordnung

    geschrieben von timebandit

    turmfalken-nikolai schrieb:
    Haben denn die einzelnen Regierungen das schon in nationales Recht umgesetzt?

    Diese Verordnung gilt für alle Mitgliedsstaten innerhalb der EU. Bei uns erfolgt die Umsetzung am 25.Mai 2018.
    Zugegeben das meiste in dieser Verordnung brauchen wir nicht zu berücksichtigen.
    Aber besonders bei Cookies, Kontaktformlaren, Cms und deren Plugins, Social Media und nicht zu vergessen googlanalytics heißt es Vorsicht walten zu lassen.
  • in: Umsetzung der Datenschutzgrundverordnung

    geschrieben von timebandit

    Hallo Community,

    wichtige Änderungen für Websitebetreiber gelten ab 25.Mai 2018.
    Die Thematik scheint aber noch nicht wirklich im Forum angekommen zu sein.
    Zur Vertiefung: https://www.datenschutz-grundverordnung.eu/wp-content/uploads/2016/04/CONSIL_ST_5419_2016_INIT_DE_TXT.pdf . Achtung 260 Pdf-Seiten.
    Diese Verordnung schützt die Interessen der User und nimmt Diensteanbieter in die Pflicht.
    Habt ihr schon auf die DSGVO reagiert und mindestens eure Datenschutzerklärung angepasst?
    Auf eine rege und gehaltvolle Diskussion freue ich mich. Beteiligt euch bitte bei der Abstimmung.
  • in: Automatische Aktualisierung von Bildern

    geschrieben von timebandit

    muellerlukas schrieb:
    Was für ein unnötiger Aufwand. Vor allem, da es ja nicht um die Seite an sich geht. Es geht um ein eingebundenes Bild.
    .
    Da hast du sicherlich recht. Berücksichtigt man den entstehenden Traffic, dann ist Ajax die bessere Variante.
    Ich habe auf meiner Baustellehttps://www.timebandit.lima-city.de/ajax.php
    einen Lösungsvorschlag für Reinholds Problem.
  • in: Automatische Aktualisierung von Bildern

    geschrieben von timebandit

    Ich empfehle für solche Aufgaben Ajax.
    Relevant wäre dann:
    xmlhttp.setRequestHeader('Cache-Control', 'no-cache');
    xmlhttp.send();

    Für meta-tags siehe:
    http://wiki.selfhtml.org/wiki/HTML/Kopfdaten/meta
    <meta http-equiv="expires" content="0">
    oder
    <meta http-equiv="expires" content="Sat, 12 Jun 2010 12:00:00 GMT">

    oder ergänze den Code von horstexplorer noch mit
    header("Expires: Sat, 12 Jun 2010 12:00:00 GMT");
  • in: Firefox verweigert Flex-Darstellung

    geschrieben von timebandit

    Korrigiere deine CSS
    zeile 53:
    main section {
    width: 100%;
    overflow-y: scroll; neue media-regel @screen and (min-width:801px)
    flex: 3 1 0;
    }
    zeile 118:
    main section, main section:first-child {
    min-height: min-content;
    overflow: hidden;
    padding-top: 0px;
    }

    müsste so funktionieren.
  • in: Php: Code aus Variable ausfürhen und anzeigen

    geschrieben von timebandit

    horstexplorer schrieb:
    Für was braucht man hier root-rechte? readfile funktioniert ohne root.

    Das deaktivieren von Funktionen hat nichts mit readfile zu tun. Man würde über disable_functions alles was 'gefährlich' ist deaktivieren können. Dafür benötigt man natürlich eine .ini Datei welche von php geladen wird. Ich weiß nicht wie das auf Lima aussieht ob diese Dateien im Webroot erkannt werden. Sonnst müsste man sie ja in das Verzeichnis von PhP legen bzw den Pfad umkonfigurieren. Kann aber natürlich sein, dass hier keine root Rechte benötigt werden und das ganze unter Lima funktioniert. Dann könnte man das schon ohne großen Aufwand auf 'sicher' umbauen.

    Weiß ned ob man auch openbasedir konfigurieren muss. Hab mir das nicht angesehen.

    Deine Antwort ist voller Konjunktive.
    Zur Erhellung dienen
    phpinfo(); zeigt dir die Konfiguration auf z.B. Lima
    ini_get();
    ini_set();
    Ich glaube zum Thema ist inzwischen so ziemlich alles gesagt. Ich bin raus.
  • in: Php: Code aus Variable ausfürhen und anzeigen

    geschrieben von timebandit

    horstexplorer schrieb:

    Nun ja ganz so evil ist es nicht.

    Das ist deine Meinung. Ich bleibe bei meiner Behauptung.

    horstexplorer schrieb:
    Aber dafür bräuchte man root um entsprechende Funktionen von PhP zu deaktivieren,

    Für was braucht man hier root-rechte?
    readfile funktioniert ohne root.
    Verzeichnis auslesen funktioniert ohne root
    Falls Dateien noch Zugangsdaten in Klartext liefern, dann rollt eine Lawine.
    horstexplorer schrieb:
    Aber wie bereits gesagt das ganze auf Lima, und ohne Kenntnisse was alles Schaden anrichten könnte aufzusetzen sollte man lassen. Das ist was für lokale Testserver und gehört nicht ans Netz.

    Da stimme ich dir uneingeschränkt zu.
  • in: Php: Code aus Variable ausfürhen und anzeigen

    geschrieben von timebandit

    Hallo darvin,

    grundsätzlich eval is evil und sollte vermieden werden.
    siehe auch:http://php.net/manual/de/function.eval.php

    Auch andere Konstrukte, die einem User gestatten ausführbaren Code zum Server zu schicken, solltest du nicht in Betracht ziehen.

    Mit readfile lade ich mir Dateien von deinem Webspace.
    Ein Dateiupload ist ein Kinderspiel.

    Also lass das, wenn du Herr deiner eigenen Webseiten bleiben willst.
  • in: Php include statt Iframe

    geschrieben von timebandit

    Für die Ausgabe etwaiger Fehlermeldungen:(Nur während der Entwicklungszeit)
    ini_set('display_errors', 1);
        error_reporting(E_ALL);

    Wahrscheinlich wird das Verzeichnis 'calculator' nicht gefunden.
    Lösung hierfür wäre zB.
    include $_SERVER['DOCUMENT_ROOT']."/tools/calculator/index.php";

    oder mit require

    Andereseits stellt sich die Frage warum du in eine index.php eine weitere Datei gleichen Namens einbinden willst?
  • in: Meta-Tags mit JS auslesen ?

    geschrieben von timebandit

    document.getElementsByTagName(xyz) liefert nur eine Nodelist.
    Mehr Möglichkeiten bietet eine Umwandlung der Nodelist in ein Array.
    <script>
    function checkMeta(){
    var meta = document.getElementsByTagName('meta'), // Liefert nur eine Nodelist
    n='';
    metas= [].slice.call(meta); // Umwandlung der Nodelist in ein Array
    
    metas.forEach(function(obj,i){ //beispielsweise:
    	console.log(obj.outerHTML); // Ausgabe in der Konsole
    // oder String erzeugen für die Ausgabe in einer Messagebox	
    n+=obj.outerHTML+'\n';
    // oder....oder
    }
    );
    alert(n); // Ausgabe in einer Messagebox;
    }
    window.onload = function() {checkMeta()}; // Aufruf der anonymen Funktion checkMeta()
    </script>





  • in: Login (Mit Weiterleitung)

    geschrieben von timebandit

    if ($data[0] == $log_user && $data[1] == $log_pass) {

    Wurde die Variable $data als Array deklariert?
    In diesem Codeabschnitt fehlt nämlich $data = array();
  • in: disabledte inputs senden.

    geschrieben von timebandit

    Allerderdings übermittelt er den wert nicht wenn die inputs disabled sind . Kann mir da jemand helfen?

    Weshalb sollte $_POST Daten aus "disabled fields" übertragen? Das ist doch ein Widerspruch.
    Deshalb werden $_POST["betreff"] und $_POST["main"] im $_POST-Array nicht angelegt.
    Für eine Datenübertragung an die verarbeiten.php müsstest du die Variablen in eine Session packen.
  • in: FTP- readfile() Download kaputter Datein

    geschrieben von timebandit

    Versuche mal
    anstatt
    header('Content-Type:'.$mime_type);
    mit
    header('Content-Type: application/octet-stream');
    zu ersetzen.
  • in: MySQL webhoster

    geschrieben von timebandit

    php-test1 schrieb:
    Leider hat Lima-City gerade ein Problem mit den Datenbanken-Servern. (lima-status.de) Sie sind heute nicht online, und sie waren auch den ganzen monat noch nicht online. Dort muss es dann bestimmt Probleme geben.

    Um genauere Informationen zu erfahren, währe es besser, wenn du ein Support-Ticket schreibst.

    Und wenn die Datenbanken Down, oder nur sehr langsam laufen, sind die Antwortzeiten dann leider auch länger.


    Das kann ich nicht bestätigen. Der Statusanzeige sollte man in diesem Fall nicht vertrauen.
    Meine Datenbankverbindung läuft heute, gestern und auch die vergangenen Tage hinweg reibungslos....

    Probleme könnten veraltete Scripte bereiten, die seit dem PHP-Upgrade eingeschränkt funktionieren oder gar nicht laufen.
  • in: iframe 100% width html5 validation

    geschrieben von timebandit

    Fehler liegt darin: width="100%"
    HTML5 verlangt Höhen- und Breitenangaben des iframes in Pixel.
  • in: Eigener Text statt Fehlermeldung / Verfügbarkeit einer API

    geschrieben von timebandit

    Vorschlag:
    Response-Header abfragen.
    $url = 'http://api.captainteemo.com/player/euw/iNono/recent_games';
    $out = get_headers($url);
    echo "ANTWORT: ".$out[0]."<br>";
    if($out[0]=="HTTP/1.0 200 OK"){
    echo "ALLES OK";}
    else{echo "ETWAS LIEF SCHIEF";}
  • in: Eigene php.ini

    geschrieben von timebandit

    tchab schrieb:

    Auch wenn ich bezweifle, dass man damit das Upload-Limit aushebeln kann. ^^

    Über Grenzen Aushebeln kann man das Upload-Limit nicht.
    Die Grenze liegt meines Wissens nach bei 2MB.
    upload_max_filesize=2M
    Das reicht für die Zwecke des TE vollkommen aus.

  • in: Eigene php.ini

    geschrieben von timebandit

    tchab schrieb:
    Auf Lima kann man keine eigene php.ini platzieren. ;)

    Doch!
    Veränderbar: PHP_INI_PERDIR
    PHP_INI_USER
    PHP_INI_ALL

    Nicht veränderbar: PHP_INI_SYSTEM
  • in: Eigene php.ini

    geschrieben von timebandit

    hft schrieb:
    Moin, Moin

    ich habe schon das Forum, nach passenden Einträgen durchforstet, doch leider nichts gefunden, daher eröffne ich dieses neue Thema.

    Kann mir einer verraten, ob wir hier bei Lima eine eigene php.ini implementieren dürfen auf dem Server?

    Weil habe Joomla 3.1 installiert und nun mekkert Joomla, das meine Uploadgrösse unter 2MB sei...

    Ansonsten, ist der Upload hier beschränkt auf xy MB pro Datei?

    Wenn ja, wie kann man das ändern......gegen Kohle?

    Danke für eure Antworten.

    Gruss
    HFT

    Ja. Du erstellst mit einem Texteditor (z.B.Notepad++) eine eigene php.ini und schiebst diese dann in dein Verzeichnis.
    Der Inhalt deiner eigenen INI-Datei benötigt diesen Eintrag:
    upload_max_filesize=2M

    Ein Verzeichnis der PHP.INI Direktiven findest du hier
  • in: db connection prüfen

    geschrieben von timebandit

    Füge nach
    $db=new mysqli('mysql.lima-city.de','USER******','**','db_******_**');

    das hier ein
    if (mysqli_connect_errno()) {
        printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error());}
  • in: PHP-Code vor include parsen

    geschrieben von timebandit

    nie-genug-gewuerzt schrieb:

    Trotzdem nochmal vielen Dank für deine Arbeit! Aber wenn du bei deinem "herumspielen" nicht doch noch eine Möglichkeit gefunden hast wie man lima-interne Seiten nutzen kann, werde ich das wohl nicht realisieren können.

    In diesem Beispiel wurde dreimal file_get_contents() eingesetzt.
    Das Script dazu:
    ini_set('display_errors', 1);
        error_reporting(E_ALL);
    // mit Wurzelverzeichnis
    $richtig = file_get_contents("{$_SERVER["DOCUMENT_ROOT"]}/nie-genug-gewuerzt/index.html");
    echo <<<FGC
    <!DOCTYPE Html>
    <html>
    <head>
    <title>FILE_GET_CONTENTS</title>
    </head>
    <body>
    <h1 style="color:blue">file_get_contents klappt mit ["DOCUMENT_ROOT"]</h1>
     $richtig
     <br><br>
     <h1 style="color:red"> file_get_contents klappt nicht mit der URL innerhalb von lima</h1>
    FGC;
    // mit URL innerhalb lima
    $falsch = file_get_contents("http://timebandit.lima-city.de/nie-genug-gewuerzt/index.html");
    echo $falsch;
    echo '<h1 style="color:blue"> file_get_contents klappt mit der URL außerhalb von lima</h1>';
    // mit URL außerhalb lima
    $google = file_get_contents("http://google.com");
    echo $google;
    echo "</body></html>";

  • in: PHP-Code vor include parsen

    geschrieben von timebandit

    Habe mal file_get_contents herumgespielt:
    file_get_contents funktioniert
    a) wenn du das Wurzelverzeichnis verwendest;
    b) wenn du auf einen anderen Server zugreifst(ist ohnehin Standardeinstellung).
    file_get_contents funktioniert nicht, wenn du innerhalb des Limaservers die URL verwendest!

    Hier ein kleines Beispiel
  • in: PHP-Code vor include parsen

    geschrieben von timebandit

    Ein Aufruf einer Seite mit der Funktion file_get_contents() innerhalb des Limaservers ist meines Wissens nach nicht möglich.
    fopen() sollte funktionieren.
  • in: Dateien via HTML und PHP hochladen

    geschrieben von timebandit

    Der Server wird dein Verzeichnis so nicht finden. Verwende besser das Wurzelverzeichnis.
    Wenn deine Datei im Ordner vosliker.lima-city.de/public_html liegt, dann genügt
    $uploaddir = "{$_SERVER["DOCUMENT_ROOT"]}/public_html/";
    ansonsten $uploaddir = "{$_SERVER["DOCUMENT_ROOT"]}/dein/Pfad/zum/public_html/";
    Das könnte dann etwa so aussehen:
    if(preg_match('/\\.(txt|jpg|png)$', $_FILES["datei"]["name"]) && $_FILES["datei"]["size"] > 0 && $_FILES["datei"]["size"] < 1000000)
      {
       $uploaddir = "{$_SERVER["DOCUMENT_ROOT"]}/dein/Pfad/zum/public_html/";    // Pfad anpassen
    /* Hier könnte noch eine Überprüfung vorgenommen
    werden, ob das Verzeichnis existiert
    if(is_dir($uploaddir))*/
       if(move_uploaded_file($_FILES["datei"]["tmp_name"],$uploaddir.$_FILES["datei"]["name"]))
          {
           header("Location: status.html");
          }
          else 
           {
            echo "<h1>Der Upload ist gescheitert</h1>";
           }
       }
       else 
       {
       echo "Entweder ist keine Datei ausgewählt oder die Datei ist zu gro&szlig!";
       }
  • in: HTML Tabelle mit Bildgröße in %

    geschrieben von timebandit

    Bilder in Tabellen zu integrieren führt häufig zu Darstellungsproblemen(siehe SELFHTML).
    Die Höhenangabe von Images in Pixel oder Prozent ist da eher nebensächlich.
    Du wirst die Dimension der Bilder in Abhängigkeit der Tabellenreihen dynamisch berechnen müssen.
    SEO-freundlicher und moderner ist die Verwendung von DIVs.
  • in: Dateien via HTML und PHP hochladen

    geschrieben von timebandit

    if (preg_match($_FILES["datei"]["size"] > 0 && $_FILES["datei"]["size"] < 1000000) 
       
        move_uploaded_file($_FILES["datei"]["tmp_name"],"public_html/".$_FILES["datei"]["name"]);
        header("Location: status.html");

    Dort fehlen schließende bzw. öffnende Klammern.
    Korrigiert sieht das so aus:
    Edit
    if (preg_match($_FILES["datei"]["size"] )> 0 && $_FILES["datei"]["size"] < 1000000)

    {move_uploaded_file($_FILES["datei"]["tmp_name"],"public_html/".$_FILES["datei"]["name"]);
    header("Location: status.html");}


  • in: Suche Präs. Themen

    geschrieben von timebandit

    Verbindung von Medizintechnik und Haut:
    Herstellung von Hautgewebe im Reagenzglas zu Transplantationszwecken.
    Anwendung in der plastischen Chirurgie zur Behandlung schwerer Verbrennungen.
  • in: HTML Tabelle mit Bildgröße in %

    geschrieben von timebandit

    HTML5
    Differences Between HTML 4.01 and HTML5
    In HTML 4.01, the height could be defined in pixels or in % of the containing element. In HTML5, the value must be in pixels.
    Zeilenhöhe in Tabellen allgemein(Quelle: SELFHTML):
    Die Angabe zur Zeilenhöhe ist nur wirksam, wenn der Inhalt in jeder Spalte der Zeile kleiner ist, so daß leerer Raum entsteht. Wenn der Inhalt größer ist, wird die Angaben außer Kraft gesetzt. Die Zeile wird in diesem Fall so dimensioniert, daß der gesamte Inhalt angezeigt wird. Das ist beispielsweise der Fall, wenn in der Zeile eine Grafik vorkommt, die höher ist als die angegebene Zeilenhöhe.

    Falls Sie zugleich eine bestimmte Höhe der gesamten Tabelle angeben, hat die Angabe zur Gesamthöhe im Konfliktfall Vorrang gegenüber der angegebenen Höhe einer einzelnen Zeile.
  • in: move_uploaded_file in übergeordnetes Verzeichnes

    geschrieben von timebandit

    mit code=html bzw. php

    Probier mal das:
    $benutzername='Dein Name';
    $passwort='Dein Passwort';
    $ftp_server='ftp.lima-city.de';
    if(!empty($_POST['send']) && $_FILES['userfile']['name'] !="") 
       {
    	$connection_id = ftp_connect($ftp_server);
        $login_result = ftp_login($connection_id, $benutzername, $passwort);
    	if ((!$connection_id) || (!$login_result))  
    	  {
           echo "<h1>FTP-Verbindung konnte nicht hergestellt werden!<h1>";
           echo "<p>Verbindung mit FTP-Server als Benutzer {$benutzername} nicht möglich!</p>";
           die;
          } else 
    	       {
                $status = "<p>Verbunden mit FTP-Server als Benutzer {$benutzername}</p>";
               }
        $uploaddir = {$_SERVER["DOCUMENT_ROOT"]}/../bla/gallery/; 
    if(is_dir($uploaddir)) 
          { 
           $upload = ftp_put ($connection_id,$_FILES['userfile']['name'],$uploaddir, FTP_ASCII);    
           if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$_FILES['userfile']['name'])) 
    	     {
              echo "<strong><li>'{$_FILES['userfile']['name']} </li></strong> wurde erfolgreich hochgeladen.";
             		    
             } else 
    		      {
                   echo "Ein Fehler ist beim Datei-Upload aufgetreten";
                  }
    	  }
        ftp_close($connection_id);
        unset($_POST['send']);
       }

    Verwende meine Inputform oder passe den Codeschnipsel deinen Erfordernissen an.
    Beachte auf alle Fälle die Begrenzung hinsichtlich Dateigröße und -format.
  • in: move_uploaded_file in übergeordnetes Verzeichnes

    geschrieben von timebandit

    Verwende das Wurzelverzeichnis.
    $orgpath = "{$_SERVER["DOCUMENT_ROOT"]}/../bla/gallery/"
    Als Rohfassung kannst du das verwenden:
    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $orgpath .$_FILES['userfile']['name'])) 
    	     {
              echo "<strong><li>'{$_FILES['userfile']['name']} </li></strong> wurde erfolgreich hochgeladen.";}

    Ich gehe mal davon aus, dass der Imput etwa so ausschaut:
    <form enctype="multipart/form-data" action="" method="POST">
    <?php echo $status;?>
    <p>Diese Datei hochladen: </p><input name="userfile" type="file" >
    <input type="submit" name="send" value="upload">
    </form>

    Codeschnipsel ist allerdings ungetestet...
  • in: mehrere SQL Wert in einer Variabel

    geschrieben von timebandit

    Wie bereits gesagt, wandelt die Funktion implode() ein Array in einen String um.
    $alles_in_der_variable = implode (" ", $daten);

    Nur ne Frage: Was kommt in diese leeren Anführungszeichen in der Klammer, bzw warum sind die da?

    In diese "leeren Anführungszeichen" kommt das Zeichen, mit dem du die Arrayelemente innerhalb des Strings trennen willst.
    In diesem Fall ist es ein Leerzeichen(chr32).
    Der erzeugte String sieht demnach so aus: Wert1 Wert2 Wert3 ...Wertn+1
    Falls du Kommas oder Punkte oder Strichpunkte verwenden willst, dann werden die Arrayelemente mit den entsprechenden Zeichen separiert.
    Z.B.
    $alles_in_der_variable = implode (";", $daten);

    liefert Wert1;Wert2;Wert3; ...Wertn+1
  • in: if bedingungen erweitern

    geschrieben von timebandit

    themind schrieb:
    Es kommt drauf an, wass dort mit JavaScript/HTML eingeführt wurde.

    Willst du verhindern dass ein Bot sich automatisch registriert? Captcha.
    HTML-Eingaben hast du doch bereits erfolgreich mit htmlspecialchars() weggemacht,
    ansonsten gibt es da nichts zutun.

    Hier gibt es erheblich viel zu tun!
    Zunächst sollten veraltete(deprecated) Funktionen wie $eintragen = mysql_query($eintrag); durch aktuellere Funktionen ersetzt werden. Die mysqli-Funktionen, noch besser PDO, in Verbindung mit Prepared Statement gewährleisten einen hohen Schutz vor SQL-Injektionen.
    Captchas sind für Bots nicht wirklich ein Problem.
    Interessant wäre der Eintrag(Injektion) in der/den Datenbanktabelle(n), denn dann lassen sich Rückschlüsse auf das/die schwache(n) Script(e) ziehen.
  • in: TrueCrypt öffnen Fehler (Linux)

    geschrieben von timebandit

    Eine Antwort und Lösung findest du
    hier unter Punkt 10.1
  • in: jQuery - JSONP Ergebnis Ausgabe (each)

    geschrieben von timebandit

    Versuchs mal damit:
    $.each(resdata.synsets, function(synkey, synval){
                $.each(synval.terms, function(tkey, tval){
                    $('#result1').append("<br />" + tval.term + "\n");
                });
            });
     
            $.each(resdata.similarterms, function(simkey, simval){
                $('#result2').append("<br />" + simval.term + "\n");
            });
     
            $.each(resdata.substringterms, function(subkey, subval){
                $('#result3').append("<br />" + subval.term + "\n");
            });
     
            $.each(resdata.startswithterms, function(stukey, stuval){
                $('#result4').append("<br />" + stuval.term + "\n");
            });
  • in: XSS - Angriffe verhindern

    geschrieben von timebandit

    Du könntest dein XSS-anfälliges Script posten.
    Deine Dateien könnten auch über andere Wege (z.B. FTP-Zugangsdaten) manipuliert worden sein.
    Grundsätzlich müssen alle eingehenden Daten (auch $_SERVER(), Cookies, etc.) validiert werden.


  • in: Breite eines Textes erkennen und evtl Größe ändern

    geschrieben von timebandit

    Wie wäre es mit einem einfachen Zeilenumbruch in CSS?
    word-wrap:break-word;

    Die Länge des Textelements ermitteln:
    var laenge = document.getElementById("MeineID").innerHTML.length;
  • in: Content dynamisch nachladen

    geschrieben von timebandit

    Du könntest Heredoc verwenden.
    echo <<<EOT
    <script type="text/javascript">
         $(document).ready(function() {
                      $("#refresh").load('templates/lastthree.tpl.php?sid=$sid');
                       var refreshId = setInterval(function() {
                              $("#refresh").load('templates/lastthree.tpl.php?sid=$sid');
                              }, 30000);
        });
    </script>
    EOT;

    Nachzulesen hier.
  • in: Mysql - Gleichzeitiger Zugriff

    geschrieben von timebandit

    Teste doch zunächst wie lange eine DB-Bearbeitung dauert.
    <?php
    //Datenbankverbindung, Tabellenauswahl
    $start = microtime(true);  
    $sql='SELECT nummer FROM zaehlen;';
    $erg=mysql_query($sql);
    $zeile=mysql_fetch_array($erg,MYSQL_ASSOC);
    $nummer1=$zeile['nummer'];
    
    //Berechnungen
    $nummer2=$nummer1+7;
    
    $sql="UPDATE zaehlen SET nummer=$nummer2;";
    mysql_query($sql);
    $end = microtime(true) - $start;
    echo "Wert von $nummer1 auf $nummer2 geändert.";
    echo "Die Bearbeitung dauerte: $end Sekunden;
    ?>

    Siehe Zeile 3 und 14.


  • in: runde Elemete

    geschrieben von timebandit

    flockhaus schrieb:
    Du kannst auch mit Bildern und entsprechendem CSS hantieren, um auf Nummer sicher zu gehen.

    flockhaus hat dir bereits den entscheidenden Tip gegeben.
    Dein Regenbogenbild musst du schon selbst gestalten und einbetten.
    Das Element <img> lässt Klickereignisse zu.
  • in: Beim laden der Webseite einmal refreshen

    geschrieben von timebandit

    Mich wundert, dass der gepostete Code überhaupt funktioniert.
    Die korrekte Syntax für Superglobals wie $_GET() oder $_POST() ist:
    $_POST['abc'] bzw. $_POST["abc"], was bei deinem Code nicht der Fall ist.
    Für deine "tabelle_bearbeiten.php" habe ich das mal für dich gemacht.
    Außerdem habe ich die SQL in eine lesbarere Form gebracht und berichtigt.
    Das Refresh-Problem wird mittels eines Redirects an die "kunden.php" mit einem Get-Request gelöst (Zeile 38).

    <html>
    <head>
    <title>Eingabemaske</title>
    </head>
    
    <body>
    <?php
        // Verbindung zur Datenbank herstellen
        require_once "dbconnect.php";
    
        // übergebene Daten zurück in die Datenbank schreiben
        if (isset($_POST["submit_eingabemaske"]))	// Submit-Schaltfläche der Eingabemaske wurde betätigt
        {
            // SQL-Kommando: Ändern von Einträgen
    // Hier wurden von mir Korrekturen vorgenommen
            $sql="UPDATE 
    		            Kundenliste 
    		      SET 
    			        Datum='{$_POST['Datum']}', 
    		            Telefonnummer='{$_POST['Telefonnummer']}' , 
    			        Ansprechpartner='{$_POST['Ansprechpartner']}', 
    			        Firmenname='{$_POST['Firmenname']}', 
    			        Strasse='{$_POST['Strasse']}', 
    			        PLZ='{$_POST['PLZ']}', 
    			        Ort='{$_POST['Ort']}', 
    			        Mobilfunkanbieter='{$_POST['Mobilfunkanbieter']}', 
    			        MVertragslaufzeit='{$_POST['MVertragslaufzeit']}', 
    			        Festnetzanbieter='{$_POST['Festnetzanbieter']}', 
    			        FVertragslaufzeit='{$_POST['FVertragslaufzeit']}' , 
    			        Email='{$_POST['Email']}', 
    			        Sonstiges='{$_POST['Sonstiges']}'
                  WHERE 
    			        ID='{$_POST['ID']}'";
            // SQL-Kommando ausführen
            mysql_query($sql) or exit("Fehler im SQL-Kommando: $sql");
        }
    
    header("Location: http://sash111.lima-city.de/kunden.php?id={$_POST['ID']}"); 	
    ?>
    /* Das solltest du entfernen
    Daten erfolgreich eingetragen.
    
    <script type="text/javascript">
    setTimeout("self.location.href='http://sash111.lima-city.de/kunden.php'",4000);
    </script>*/
    
    </body>
    </html>

    Die Änderungen bezüglich $_GET["id"] musst du noch vornehmen.
  • in: Beim laden der Webseite einmal refreshen

    geschrieben von timebandit

    Ohne aussagefähigen Code wird dir kaum geholfen werden können.
    Eine Möglichkeit könnte AJAX (XMLHttpRequest und onreadystatechange) sein.
  • in: Wordpress 404 Fehler nach Umzug

    geschrieben von timebandit

    Für die DB Host geändert?
    Normal: host=localhost
    Für lima: host=mysql.lima-city.de
  • in: PHP Cookie Problem

    geschrieben von timebandit

    ini_set('session.cookie_lifetime',100);
    session_start();
    if(isset($_GET["lang"])){
    $langs = $_GET["lang"];
    $_SESSION['langs'] = $langs;
    }
    elseif(isset($_SESSION["langs"])){
    $langs = $_SESSION["langs"];
    $_SESSION['langs'] = $langs;
    }
    else{
    $langs = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
    $_SESSION['langs'] = $langs;
    }

    Bin dem Link auf deine Seite http://florianleonsteenbuck.lima-city.de/?lang=en gefolgt.
    Die Variable $_GET["lang"] wird nicht übermittelt, deshalb wird dieser Codeteil übersprungen
    if(isset($_GET["lang"])){
    $langs = $_GET["lang"];
    $_SESSION['langs'] = $langs;
    }

    Ich gehe mal davon aus, dass $_SESSION['langs'] im obigen Teil initialisiert werden sollte, aber eben nicht wurde.
    Folglich steht diese Variable nicht zur Verfügung und deshalb wird auch dieser Codeteil übersprungen.
    Der Code ist ohnehin sinnlos, weil sich hier alles im Kreis dreht!
    elseif(isset($_SESSION["langs"])){
    $langs = $_SESSION["langs"];
    $_SESSION['langs'] = $langs;
    }

    Zuletzt wird diese Anweisung ausgeführt und wird als Ergebnis für $_SESSION['langs'] ="de" liefern.
    else{
    $langs = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
    $_SESSION['langs'] = $langs;
    }

    Tip:
    Benutze in der Entwicklungszeit die PHP-Funktionen var_dump() oder print_r().


  • in: Ablauf einer Funktion, verständniss Problem

    geschrieben von timebandit

    aff3m1tw4ff3 schrieb:
    Wenn ich die Funktion
    Ende
    entferne sollte doch in der Funktion
    getSign
    trotzdem alles normal ablaufen. ( so denke ich mir das )

    Richtig gedacht.
    ende();
    auch entfernt?
    Alle geschweiften Klammern geschlossen?

    Gibt es denn eine Möglichkeit, dem Script zu sagen, es soll doch bitte die Schleife komplett durchlaufen und dann erst den Rest ausführen? Das Hauptproblem ist ja, das die Schleife nicht vollständig durchlaufen wird. Bei kleineren Mengen ( bis 10 ) geht es noch, größere Mengen werden dann aber nicht vollständig ausgeführt.

    Also das in dieser Funktion verweilt wird bis die Schleife durch ist, danach dann die
    Funktion ende starten.

    Die Schleife wird ganz sicher zuerst durchlaufen.
    Warum du zig-mal den gleichen Request abschicken möchtest, erschließt sich mir nicht.
    Tatsache ist, dass der Server recht bald die Antwort verweigern wird, weil er hinter den immer gleichen Anfragen eine DoS-Attacke vermuten wird. Das ist die Ursache für dein "Mengenproblem".
  • in: Div-Box mit transparenten Hindergrund?

    geschrieben von timebandit

    demivee schrieb:
    ....Aber ich meine ja, dass wenn Java im Browser deaktiviert ist, dass die Seite dann nicht mehr so angezeigt wird wie es gedacht war, oder?

    Du meinst Java, ist aber tatsächlich JavaScript. Wenn JS im Browser deaktiviert aber für die Darstellung der Seite erforderlich ist, dann gibt es logischerweise Einschränkungen.
    demivee schrieb:
    p.s.: wird opacity von irgendwelchen Browsern nicht unterstützt?

    Wie meistens benötigen die verschiedenen Versionen des IE eine Sonderbehandlung.
    Eine empfehlenswerte Seite zum Thema findest du hier.
  • in: PHP - Webbuilder 2014

    geschrieben von timebandit

    Füge an den Anfang von "Login.php":
    ini_set('display_errors', 1);
    error_reporting(E_ALL);

    und poste mindestens den Scriptteil, der das Superglobal $_POST() verarbeitet.
    Falls dir Fehler angezeigt werden (wg. error_reporting(E_ALL)), dann teile uns diese bitte mit.
  • in: PHP - Webbuilder 2014

    geschrieben von timebandit

    <input type="text" name="Username" value="Username" />

    name und value sind gleich, was zu Problemen führt.
    Lass value entweder ganz weg, oder mache value="Benutzername".
  • in: URLs gleicher Domain gruppieren ?

    geschrieben von timebandit

    Vielleicht hilft dir das weiter:
    <ul> = unordered list => liefert unsortierte Liste
    <ol> = ordered list => liefert sortierte Liste
  • in: Zugriff auf Element/Object-Attribute/Property via 'Variable'

    geschrieben von timebandit

    Genügt dir das?
    function changeText() {
    document.getElementById('myID').innerHTML = "mein neuer Wert, der jetzt im Textfeld angezeigt wird";
    }
  • in: problem mit mysql select und session

    geschrieben von timebandit

    if(isset($_SESSION['SESS_MEMBER_ID'])) {
    $mysqlconnect = mysql_connect($mysqlhost, $mysqluser, $mysqlpass) or die ("Die Verbindung konnte nicht gerstellt werden");
    mysql_select_db($mysqldata, $mysqlconnect) or die ("Datenbank konnte nicht ausgewählt werden!");
    $mysqldaten = "SELECT username, first_name, last_name, email FROM users WHERE id='".mysql_real_escape_string($_SESSION['SESS_MEMBER_ID'])".'";
    $mysqldaten_query = mysql_query($mysqldaten);

    Richtig:
    id='".mysql_real_escape_string($_SESSION['SESS_MEMBER_ID'])."'";

    Außerdem könnten weitere Fehlerquellen vorhanden sein.
    Wie generierst du den Wert für $_SESSION['SESS_MEMBER_ID'] ?
    Ist das ein String oder ein Integer?
    Von welchem Typ ist Tabellenspalte "id" in deiner DB.

  • in: Bots auf Homepage?

    geschrieben von timebandit

    Offensichtlich verwendest du ein Logfile.
    Erweitere dein Script noch dahingehend, dass Host und Browser und ggf. das Herkunftsland ermittelt werden.
    Hier mal ein Beispiel:
    IP:              74.125.184.16
    HOST:            74.125.184.16
    HTTP_USER_AGENT: AppEngine-Google; (+http://code.google.com/appengi...
    
    IP:              176.34.200.89
    HOST:            ec2-176-34-200-89.eu-west-1.compute.amaz
    HTTP_USER_AGENT: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0...
    
    IP:              91.200.114.128
    HOST:            ip-91-200-114-128.network.lviv.ua
    HTTP_USER_AGENT: Mozilla/5.0 (compatible; 008/0.85; http://www.80legs.com/webcrawler.html) Gecko/2008032620


    Das erleichtert die Botidentifikation und reduziert die Inanspruchnahme der von menschle vorgeschlagenen Dienste.
  • in: Fehler bei 2 Datenbanken in ein PHP

    geschrieben von timebandit

    Die Fehlermeldungen
    Notice: Undefined index: IP in / on line 12

    Notice: Undefined index: Text in /on line 13

    beziehen sich auf
    $ip = mysql_real_escape_string(trim($_POST['IP']));
    		$text = mysql_real_escape_string(trim($_POST['Text']));

    und bedeuten, dass im Superglobal $_POST() weder "IP" noch "TEXT" als Index vorliegen.
    Mit anderen Worten eine Übertragung durch die Methode POST fand nicht statt.
    ---------------------------------------------------
    Die Fehlermeldungen
    Notice: Undefined variable: row in / on line 38
    
    Notice: Undefined variable: row in / on line 39
    
    Notice: Undefined variable: row in /home/ on line 38
    
    Notice: Undefined variable: row in / on line 39

    beziehen sich auf
    while($aRow=mysql_fetch_assoc($vResult)){ 
                $aNames[] = $row['Name']; 
                $aEmails[] = $row['Email']; 
            }

    Ändere die Variable $aRow in $row um.
    Das ganze wird dir aber kein Ergebnis bringen, da deine DB-Abfrage wegen der fehlenden Werte für $ip und $text ins Leere läuft.
  • in: problem mit mysql select und session

    geschrieben von timebandit

    Ändere
    $mysqldaten = "SELECT username, first_name, last_name, email FROM users WHERE id='$id'";

    in
    $mysqldaten = "SELECT username, first_name, last_name, email FROM users WHERE id='".$id."'";

    Es geht allerdings besser, weil modernder, wenn du Prepared Statments mit mysqli bzw PDO verwenden würdest
  • in: Wordpress Session prüfen

    geschrieben von timebandit

    Die bisherigen Lösungsvorschläge(?) laufen alle ins Leere, weil
    1. WP Cookies und keine weiteren Sessionvariablen verwendet.
    2. Eine Einbindung von wp-blog-header.php und/oder wp-config.php nichts bringt außer ein Template oder eine leere Seite.

    Mein Lösungsansatz beinhaltet eine Modifikation der "wp-login.php" vllt. auch der "user.php".
    Außerdem muss in der DB die Tabelle wp_users um eine Spalte vom Typ bool erweitert werden.
    Die wp-login.php erweiterst du mit der Anbindung an die Tabelle wp_users und trägst bei erfolgreichem Login eines Users in die neue Spalte den entsprechenden Wert(wahr/falsch) ein.
    Extern kannst du dann die Tabelle wp_users jederzeit abfragen.

    Weil sich nicht jeder User ordentlich abmeldet und deshalb "Leichen" enstehen können, solltest du auch über eine Session nachdenken.
  • in: Dopplung Artikel vermeiden mit PHP Fehler

    geschrieben von timebandit

    realsocialnews schrieb:
    Bitte teste den Code mal wirklich
    und fang nicht nur einfach ein get request ab.
    Alserstest sagt du mir ich solles drehen und dann drehst du das was ich gedreht habe nochmal um
    Der Code funktioniert nicht

    Es gibt hier keinen Grund herumzumotzen. Okay, hab mich beim Kopieren vertan, so what?

    Bitte teste den Code mal wirklich
    und fang nicht nur einfach ein get request ab.

    $titlel="";
    if(isset($_GET['id'])) { 	
        if($_GET['id']=='Hallo'){
           $titlel="Hallo;}
        if($_GET['id']=='kein Hallo'){
          $titlel="kein Hallo";}               
     $olddateione='Da steht <a id="Hallo"> etwas';
     if(strpos($olddateione,'<a id="'.$titlel.'">')===true){
                        echo "<h1>Artikel konnte nicht erstellt werden, weil der Artikel schon existiert.</h1>";
                          }
                         else {if(strpos($olddateione,'<a id="'.$titlel.'">')===false) {
                                 echo "<h1>Artikel wird erstellt.</h1>";
                          }
    }}

    Auch Schlaumeier werden bemerken wofür der GET-Request im Beispiel benötigt wird!
  • in: Dopplung Artikel vermeiden mit PHP Fehler

    geschrieben von timebandit

    So funkts:
    if(strpos('<a id="'.$titlel.'">',$olddateione)===true){
    echo "<h1>Artikel konnte nicht erstellt werden, weil der Artikel schon existiert.</h1>";
    }
    else {if(strpos('<a id="'.$titlel.'">',$olddateione)===false)
    {echo "<h1>Artikel wird erstellt.</h1>";}
    }

    Zu sehen Hier
  • in: Wordpress WP HTTP Error

    geschrieben von timebandit

    Das was du beschreibst ist kein Fehler, sondern liegt an serverseitigen Einstellungen des Hosters.
    Bei deinem genannten Beispiel werden keine externen Verbindungen über HTTP zugelassen.
    Hier bei lima gilt diese Einschränkung nicht, d.h. du kannst WP in vollem Umfang nutzen.
  • in: Dopplung Artikel vermeiden mit PHP Fehler

    geschrieben von timebandit

    Syntax für strpos():
    strpos(STRING,SUCHSTRING);
    Also genau umgekehrt.
  • in: Fehlermeldung.

    geschrieben von timebandit

    php-test1 hat vollkommen recht.
    Wer hier Hilfe haben will, der sollte seinen Unmut nicht so zeigen wie du es tust.
    Zeile 23: $id=$_GET['id'];
    <FORM method="POST" action="registrieren.php?id=2">
    Was steht im Superglobal $_GET() ?
    Antwort: nichts.
    Ändere $_GET['id'] in $_POST['id'] und der Fehler ist behoben.
    Auf eklatante Schwächen in deinem Script gehe ich allerdings nicht näher ein.
  • in: SQL wird nicht angezeigt im PHP

    geschrieben von timebandit

    internetplattform schrieb:
    habe die error info eingeschaltet, nun kommt die info, dass es zu "Abfrage ist zu komplex" ist, was soll bitte daran zu komplex ein?

    Die Fehlermeldung ist doch eindeutig.
    MySQL kann deine Anfrage nicht verarbeiten.
    Mein Hinweis "Keep it simple, keep it stupid" ist nicht ohne Hintergedanken erfolgt.
    Ohne Kenntnis deiner Tabellenstruktur und das Ziel, welches du verfolgst, kann keine wirkliche Hilfe erfolgen.
  • in: Fehlermeldung.

    geschrieben von timebandit

    if ($id==2) {

    Die Klammer ist nicht geschlossen.
  • in: file_get_contents bei langsamer Seite

    geschrieben von timebandit

    Aussagefähiger Code wäre angebracht.
    file_get_contents() ist als Hinweis zu wenig.
  • in: SQL wird nicht angezeigt im PHP

    geschrieben von timebandit

    habe mir erlaubt dein Sql-Problem übersichtlicher zu gestalten.
    SELECT 
         [detailalles2].Adressnr, 
         [detailalles2].Rechnungnr, 
         [detailalles2].periodezahl, 
         "Zwischentotal" AS ttext, 
         "" AS trabatt, 
         Sum([detailalles2].rgtotal) AS stotal,
         1 AS sreihe
         FROM [detailalles2]
         GROUP BY [detailalles2].Adressnr, 
         [detailalles2].Rechnungnr, 
         [detailalles2].periodezahl, 
         "Zwischentotal", "", 1;
    
    union all
    SELECT 
         [summezwischen].Adressnr, 
         [summezwischen].Rechnungnr, 
         [summezwischen].periodezahl, 
         "Rabatt: Domain+Hosting" AS ttext, 
         [prabatt] & "%" AS trabatt, 
         -[summezwischen]![stotal]/100*[prabatt] AS stotal, 
         2 AS sreihe
    FROM 
       [summezwischen] 
    INNER JOIN 
       [detailhd] 
    ON 
       ([summezwischen].periodezahl = [detailhd].periodezahl) 
    AND 
       ([summezwischen].Rechnungnr = [detailhd].Rechnungnr) 
    AND 
       ([summezwischen].Adressnr = [detailhd].Adressnr);
    
    UNION ALL 
    SELECT 
         [summezwischen].Adressnr, 
         [summezwischen].Rechnungnr, 
         [summezwischen].periodezahl, 
         "Rabatt: Treue" AS ttext, 
         [jrabatt] & "%" AS trabatt, 
         -[summezwischen]![stotal]/100*[jrabatt] AS stotal,
         3 AS sreihe
    FROM
       [summezwischen] 
    INNER JOIN 
             Stammperiodezahl 
    ON 
      [summezwischen].periodezahl = Stammperiodezahl.jahr
    GROUP BY 
           [summezwischen].Adressnr,
           [summezwischen].Rechnungnr, 
           [summezwischen].periodezahl, 
           "Rabatt: Treue", 
           [jrabatt] & "%", 
           -[summezwischen]![stotal]/100*[jrabatt],
           3;

    Ein Fehler ist in Zeile 15.
    Verwende außerdem am Anfang deines Scripts:
    ini_set('display_errors', 1);
        error_reporting(E_ALL);

    Keep it simple, keep it stupid.

  • in: MySQL UPDATE mehrere Zeilen ?

    geschrieben von timebandit

    Hier mal ein Vorschlag:
    $mysqli = new mysqli($hostname, $username, $password, $database);
    if (mysqli_connect_errno()) {
        printf("Datenbankverbindung nicht möglich: %s\n", mysqli_connect_error());
    
    exit();
    }
    $werte = "(1,'12345'),(2,'abcde'),(3,'xyz123')";
    $sql = 'INSERT INTO deine_tabelle(id,s1) VALUES '.$werte.'ON DUPLICATE KEY UPDATE id=VALUES(id),s1=VALUES(s1)';
    $stmt = $mysqli->prepare($sql);
    $stmt->execute();
    $stmt->close();

    Für diese Lösung braucht es kein Array. Ein String reicht vollkommen aus.
    Es braucht auch keine Schleife, was die Performance deutlich erhöht.

Login zum Webhosting ohne Werbung!