Nimme einfach nur display: box;
Vielleicht klappt das ja.
Ansonsten, guck mal hier: W3 Schools - CSS display property (en)
Nimme einfach nur display: box;
Vielleicht klappt das ja.
Ansonsten, guck mal hier: W3 Schools - CSS display property (en)
Ich denke du musst dein Problem noch ein mal genauer beschreiben.
Der Hintergrund:
- Meine Website besteht aus einem statischen Grundgerüst, wo per Ajax der Inhalt eingesetzt wird (zur Vorlage), also auch die Formulare
- Nun möchte ich es deshalb so gestalten, dass die Formulareingaben aus unterschiedlichen Formularen auch per Ajax im Hintergrund ans PHP gesendet werden, damit auch hier die Seite nicht komplett neu laden muss (zur Vorlage
Meine Idee:
- ein einziges Ajax-Skript, welches so konzipiert ist, dass es aus allen Formularen die Daten auslesen kann und sie an das entsprechende PHP Skript weiterleitet
- Die Möglichkeit, die Daten direkt an das PHP-Skript zu leiten, falls Javascript deaktiviert sein sollte (hab da schon ne Idee)
Mein Problem:
- Ich krieg das Ajax-Skript nicht gebacken.
- Zum einen habe ich keine Idee, wie ich es schaffe, die variable Anzahl an values einzuarbeiten (Array hab ich überlegt, aber wie?)
- Wie verarbeite ich die Antwort des PHP-Skripts effizent?
- Wie schaffe ich es, dass eine Meldung ausgegeben wird, wenn es eine gibt und wenn nicht, dann nicht?
- Wie geht das mit dieser Ladeanzeige, die auftaucht und wieder verschwindet?
Ich habe zwar schon etwas in die Richtung gefunden (s.oben), aber diese Möglichkeit bräuchte ja eine individuelle Weiterleitung für jedes Formular.
Meine Idee für diese Skript-Weiche wäre es übrigens, zwei Buttons zu erstellen: einen normalen Submit-Button, in NoScript-Tags, und einen onclick-Button mit display: none, wobei der Stil per JS geändert wird. Hat wer was effizienteres??
Kann mir keiner helfen? Ich komm grad echt nicht weiter
Ja dann nimm doch einfach secs
Wenn du gestoppt hast, bleibt doch auch die Variable secs unverändert, oder seh ich das grad falsch? Das heißt, du kannst sie in stop_refresh() einfach weiter verwenden, nicht wahr?
Idee:
function toggle_refresh(){
if(ticker){
clearInterval(ticker); // stop counting
document.getElementById("countdown").innerHTML = "stopped";
}
if(document.getElementById("countdown").innerHTML == "stopped"){
startTimer(secs);
}
}
Alles anzeigen
Probiers doch mal aus. Schließlich ist secs in diesem Abschnitt ja bereits eine bestimmte Zahl, die dann als Startpunkt übergeben wird, oder?
Dynamische Seitennavigation
Scheint in die Richtung zu gehen, die du haben willst, ist offenbar recht viel Arbeit und von mir nicht getestet.
Mal schauen, ob andere bessere Ideen haben.
Link zu verschiedenen Skripts
Das ist beliebt, das sieht man oft, das wollen viele -> Es gibt schon Codes dafür
Un guck mal, da findest du direkt einen Code: Als gut erachtet Im Link -> Zwei Posts weiter
FORMDATA={};
FORMDATA.ajax=function(){
return{
call:function(url,values,echo){
var x=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP');
x.onreadystatechange=function(){
if(x.readyState==4&&x.status==200){
if(echo){
var k=new Function(giveAjaxResponse(x.responseText,true)); k()
}else{
var k=new Function(giveAjaxResponse(x.responseText,false)); k()
}
}
};
if(values){
x.open('POST',url,true);
x.setRequestHeader('Content-type','application/x-www-form-urlencoded');
x.send(values)
}else{
x.open('GET',url,true);
x.send(null)
}
}
};
}();
Alles anzeigen
function giveAjaxResponse(response,write){
var preloader = document.getElementById("preloader");
preloader.style.display = "none";
if(write){
document.getElementById("response").write(response);
}
}
function sendData(script,echo){
var preloader = document.getElementById("preloader");
values = newArray();
for (i = 0; i < values.length; i++) {
if (i == 0){
var parameter = "value" + i + "=" +values[i];
}else{
parameter += "&value" + i + "=" + values[i];
}
}
preloader.style.display = "inline-block";
FORMDATA.ajax.call(script,parameter,echo);
return false;
}
Alles anzeigen
So weit stehen die beiden Skripts, die Daten der Formulare auswerten sollen. Ich habe jetzt noch folgendes Problem: Wie werden die Funktionen durch ein Formular angesprochen?
Vorgaben dabei:
- Es sollen die Daten sowohl durch JS, als auch direkt durch PHP verarbeitet werden können
- Wenn die JS-Funktion erfolgreich angesprochen wurde, soll die PHP-Funktion nicht mehr direkt vom Formular geladen werden, sondern per Ajax-JS im Hintergrund
- Falls JS nicht funktioniert, sollen die Daten direkt an die PHP-Funktion gesendet und von dieser verarbeitet werden
- Die PHP-Funktion ist dabei jedes Mal eine andere, welche, wird bei Aufruf des Formulars gesendet
- Es sind verschieden viele Werte, die von den Formularen übermitteltund in das Array value() geschrieben werden, bzw. vom jew. PHP verarbeitet
Das mit dem PHP direkt ist kein Problem, mein Problem ist das Zwischenschalten des JS, was nicht funktioniert.
function sendData(script){
var preloader = document.getElementById("preloader");
values = new Array();
var parameter = //???
preloader.style.display = "block";
SELFPHP.ajax.call(script, parameter, 'true');
return false;
}
Alles anzeigen
So sieht die Funktion bisher aus (hab sie mal umbenannt )
Jetzt stellt sich allerdings immer noch die Frage: Wie kriege ich das values-Array in die Parameter? Mit while? Oder kann ich da direkt das Array einbauen und dann per PHP auslesen?
Das Problem ist ja, das Skript kennt die Anzahl an Parametern und ihre Aufgabe nicht. Aber ich muss ja jedes value einzeln zu einem Parameter formen, den ich dann Ajax mitgeben kann, oder?
Oder brauche ich diese parameter überhaupt, wenn ich die Daten per $_POST auslese? Die sind ja eher im Stil, wie er von $_GET ausgelesen wird?!
Also würde sich die Seite nicht neu laden, auch wenn man ein action mit submit dazuschreibt?
Und wie schreibe ich diese Funktion um, dass sie auf jedes Formular passt?
function galerypicture(){
var preloader = document.getElementById("preloader");
var value1 = document.getElementById("vorname").value;
var value2 = document.getElementById("nachname").value;
var parameter = 'vorname=' + value1 + '&nachname=' + value2;
preloader.style.display = "block";
SELFPHP.ajax.call('ajaxdata.php', parameter, 'true');
}
Alles anzeigen
Denn das ist ja die Funktion, die die Daten weiterleitet, oder irre ich mich da?
Ich denke, da bräuchte man (ein) Array(s), zB für die values, aber wie arbeite ich die dann in die Parameter ein?
Für die verschiedenen PHP-Skripts war meine Überlegung, dass so zu ändern:
Würde das funktionieren?
Heyho, ich hab mal wieder ne Frage:
Die Seite an der ich arbeite basiert bereits auf einem Ajax-Framework (Vorlage: Advitum-Tutorial, mit dem ich die Inhalte dynamisch ändere.
Nun mein Problem und die Frage dazu: Ich möchte im statischen Teil ein Ajax-Script einbinden, dass eventuelle Formularvalues aus dem dynamischen Teil entgegennimmt und asynchron an ein PHP-Skript leitet, die Antworten erhält und asynchron einbindet. Ich habe dazu das hier gefunden: Ajax/PHP, frage mich aber nun, wie ich das so einbinde, dass es auch bei Leuten funktioniert, die zB NoScript aktiviert haben.
Meine Idee: Das Formular aus Ajax/PHP so zu ändern:
<form action="ajaxdata.php" method="post">
<label>Name:</label>
<input name="vorname" id="vorname" type="text" />
<label>Vorname:</label>
<input name="nachname" id="nachname" type="text" />
<button onclick="galerypicture()" type="submit">Senden</button>
</form>
<div id="preloader" style="display:none"><img src="325.gif" width="20" height="20" /></div>
Würde das funktionieren? Mein Ziel ist es, dass die Seite NICHT neu lädt, wenn Ajax funktioniert, man das Formular aber durch Seite neu laden und PHP-Direktaufruf trotzdem nutzen kann, falls Ajax nicht geht.
Und könnte ich die Ajax/PHP-Vorlage so erweitern, dass man sie auf jedes Formular anwenden könnte? Dass Ajax quasi (zB per input type="hidden") "erkennt", an welches PHP-Skript die daten geleitet werden sollen?
Kein problem, dafür ist das Forum ja da! Außerdem find ich es toll,dass ich auch mal helfen konnte und nicht nur Hilfe brauche
Ani = Animation
Vielleicht hilfts, wenn du ein kurzen Extr-Style für Safari schreiben würdest? Wenn du den NACH deinem normalen Style lädst, würde der alte transform/transition-Befehl für Safari überschrieben werden, wodurch deine Bilder angezeigt werden könnten. Zwar wären sie dann kleiner, außer du lädst sie noch einmal größer hoch, aber sie wären da und bei Chrome würde alles funktionieren.
Vielleicht hilft dir das dabei: CSS-Browserweichen
Ich dachte, die Session läuft übergreifend und Cookies wären spezifisch?
Wenn die Session auch spezifisch ist, wäre sowas wie oben ja ausreichend.
Nene, das soll nur ein Schutz vor zB kleinen Geschwistern sein, dass die sich nicht mal denken "Ui, großer Bruder nich da, spielen wir doch mal WebsiteAdmin!" oÄ.
Das durch fehlerhafte Eingabe der Login zeitweise gesperrt wird und der Bruder so den Möchtegernhacker wieder verteiben kann.
Man glaubt gar nicht, wie oft sowas schon erzählt wurde
So ungefähr, aber wenn das einer sperrt dann kann sich ja keiner mehr einloggen
Ich will nur ein Nutzer + PW haben, weil das ein Bereich für den gesamten Pfadfinderstamm ist, für den ich die Seite schreib. Da braucht keiner irgendwas spezifisches, sondern jeder hat die gleichen Rechte und kann das Gleiche einsehen. Darum gleicher Nutzer + PW, weil ich dann weniger Arbeit habe
Aus diesem Grund muss ich das irgendwie anders regeln, also per IP-Sperre oder Cookie, damit es Spezifisch greift. Zur Not kann man es auch so machen, dass es dauerhaft gesperrt wird und sich die Leute an mich wenden müssen, um wieder entsperrt zu werden . Temporär wär mir aber lieber.
Also, ungefähr sowas wie Basiis, nur keine generelle, sondern eine spezifische Sperre.
Eine Idee von mir war, die IP auszulesen und mit der Wieder-Freigabe-Zeit zusammen in ne MySQL (SQLite)- Table schreiben zu lassen. Diese wird dann jedesmal geprüft, wenn einer den Login aufruft und IPs, wo die gespeicherte Zeit erreicht wurde, werden wieder gelöscht.
Ich denke mal, dass das möglich wäre, jetzt stellt sich mir allerdings die Frage: WIE?
Das Skript ist nur der relevante Part und nicht das komplette Skript. Ein- und- Ausloggen klappt schon, ich will es nur schaffen, dass in diesem Bereich die Versuchsanzahl geprüft und bei zu häufigem falsch das Login geblockt wird.
1. Das hab ich auch gemerkt
2. Mit Session hab ich auch überlegt und inzwischen eingebaut.
3. Wie bei 1. gesagt: Hab ich auch schon gemerkt ;). Was würdest du denn statt dessen vorschlagen? if?
4. sleep hab ich schon verworfen (s. 1. u. 3.), soll ich da auch Session nehmen?
Was ich jetzt noch brauche ist die zeitliche Beschränkung, bzw. eine andere gute Idee.
Grundüberlegung:
- Alle der Jugendgruppe kriegen den gleichen Nutzernamen + PW
- D.h. ich kann nicht einfach eine Mail zum reaktivieren senden lassen -> müsste ja die IP sperren und an den Admin (mich) senden, ich müsste die aus der Gruppe fragen wer die IP hat, die haben keine Ahnung, wo man die herkriegt -> Blöde Idee
- Also muss ich einen anderen Schutz finden, der nur für den einen greift. Kann man eine IP temporär sperren? Oder hat wer eine bessere Idee?
=)
Heyho!
Mein Ziel: Ich möchte es so basteln, dass nach drei fehlerhaften Eingaben das Form für 15Min ausgeblendet wird. Klar, gibt Effizienteres, aber für die Seite reichts erstmal und ich kann mir was besseres überlegen.
Mein Problem: Bisher baut sich die gesamte Seite nicht auf, da
Zitat von php.netHinweis: Alle eingetroffenen Signale werden erst ausgeliefert, wenn die Ausführung fortgesetzt wird.
Steht zwar nicht direkt bei sleep(), scheint aber auch dafür zu gelten.
Womit kann ich das also ersetzen?
Das bisherige Skript.
<?php
if(!isset($i)){ $i = 1; }
while ($i <= 3) { ?>
<form action="<?php $_SERVER["DOCUMENT_ROOT"]; ?>/index.php" method="post">
<span style="float: left; padding-right: 5px;">Nutzername:<br />
Passwort:</span>
<span><input type="text" name="user" value='<?php if ( isset( $user ) && $user == "Pfadi" ) {
echo $user . "' />";
} elseif ( !isset( $user ) ) {
echo "' />";
} else {
echo "' /> <p class='warning' style='display:inline'>Falscher Nutzer!</p>";
}
?><br />
<input type="password" name="pass" />
<?php if ( isset( $user ) && $user == "Pfadi" ) {
echo "<p class='warning' style='display:inline'>Falsches Passwort!</p>";
}
?><br />
<input type="submit" value="Login" /></span>
</form>
<p><?php echo $i; ?>/3 Versuchen.</p>
<?php
$i++;
sleep(180);
}
$min = time() + ( 15 * 60 );
echo "Es wurde die gültige Anzahl Einlogversuche erreicht!<br />
Einloggen erst wieder um " . date('H:i:s',$min) . " Uhr möglich.";
unset( $i );
sleep(900);
?>
Alles anzeigen
Ahnung:
IE kommt mit den 10px margin zwischen den Unterpunkten nicht zurande, die musst du überbrücken.
Idee:
Links in den Unterpunkten höher machen -> Css Z. 124 von 30px auf 35px. Falls es nocht klappt overflow: visible; einfügen.
Wird die Größe des Bilds nicht durch scale() im transform selbst geändert Das liegt doch nicht am transition, das macht doch nur Ani?!
Bei FF zuckt nicht der Text der Navileiste, dafür das Zeug in der Seitenleiste, selbst wenn kein Untermenü da ist. Warum? Spontan keine Ahnung!
Das @ verhindert nur, dass PHP eine Warnung ausgibt. Damit ich nicht ständig prüfen muss, ob es die Variable überhaupt gibt. Macht sich bei der Session aber nur schwer, da man sie vor der if-Klammer definieren müsste, und damit das evtl. "wahr, das ich jetzt benutze, überschreiben müsste.
Übrigens danke, durch den Einwand mit dem value bin ich auf diese Lösung gekommen:
if($user == "XXX" && $pass == "YYY"){
$_SESSION["angemeldet"] = "wahr";
}
if(isset($_SESSION["angemeldet"]) && $_SESSION["angemeldet"] == "wahr"){
$urlParts = array();
preg_match('/\/([a-z]+)\.php(\?.*)?$/', $_SERVER["REQUEST_URI"], $urlParts);
if(isset($urlParts[1]) && isset($titles[$urlParts[1]])) {
$page = $urlParts[1];
} else {
$page = 'index';
}
} else{
$page = 'index';
}
Alles anzeigen
Für die, die das mal nachmachen wollen
Nur aufpassen, dass man im ersten Array auch den Seitentitel von den Links einbaut, sonst wird auch nur der index angezeigt!
Da kann man dir ohne den Navi-Ausschnitt ausm HTML und dem CSS-Code nicht viel helfen.
Was mir da noch auffällt:
- Bei meinem FF ist das 2012 (bzw. der beim hovern kommende Rahmen) noch überm Schatten von Reisen
- Die Zahlen schieben den Inhalt der linken Seitenleiste nach unten.
Aber wie gesagt, da bräuchte man den HTML-Ausschnitt und das CSS um wirklich helfen zu können
Heyho!
Ich hab vor Kurzem versucht, aus einem Ajax-OnePage-Skript etwas ähnliches mit Login zu basteln, was allerdings nicht ganz geklappt hat
Die Überlegung:
- Die index.php prüft, ob die Session steht. Wenn ja, wird alles angezeigt und korrekt eingebunden, wenn nein, wird alles ausgeblendet und evtl. Direkt-URLs zur index.page.php zurückgeleitet.
- Bei Eingabe vom korrekten Nutzernamen und Passwort wird die Session erstellt
- Der Rest erklärt sich, denke ich, wenn man den Code durchliest.
Das Problem:
- Nach Eingabe der korrekten Daten in der index.page.php erscheint alles richtig und wird erweitert. Klicke ich nun aber auf den Link zur test.page.php loggt sich die Seite aus, lässt alles verschwinden und zeigt den Login. Soweit ja gut, aber die Session wurde erstellt und noch nicht zerstört! Also sollte eigl. die test.page.php eingebunden und angezeigt werden!
Der Code:
Die .htaccess leitet die URLs erstmal über die index.php
<IfModule mod_rewrite.c>
# Enable URL rewriting
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
# Main URL rewriting.
RewriteRule .* index.php [L]
</IfModule>
Alles anzeigen
Die index.php, die den Login regeln soll
<?php
session_start();
$titles = array(
'index' => 'Startseite',
'calendar' => 'Kalender bearbeiten',
'forum' => 'Mitgliederforum'
);
@$user = $_POST["user"];
@$pass = $_POST["pass"];
@$session = $_SESSION["angemeldet"];
if($user == "XXX" && $pass == "XYZ"){
$session = true;
}
$urlParts = array();
preg_match('/\/([a-z]+)\.php(\?.*)?$/', $_SERVER["REQUEST_URI"], $urlParts);
if(isset($session) || $session){
if(isset($urlParts[1]) && isset($titles[$urlParts[1]])) {
$page = $urlParts[1];
} else {
$page = 'index';
}
} else{
$page = 'index';
}
?>
<!DOCTYPE html>
<? xml version="1.0" encoding="UTF-8" ?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="de">
<head>
<title><?php echo $titles[$page]; ?> - Pfadfinder Weilheim</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="author" content="Manuel Schober" />
<meta name="publisher" content="www.df.eu" />
<meta name="copyright" content="Pfadfinder Weilheim" />
<meta name="description" content="Mitgliederbereich des BdP-Pfadfinderstammes Sir Francis Drake" />
<meta http-equiv="cache-control" content="no-cache" />
<meta name="robots" content="NOINDEX, NOFOLLOW" />
<meta name="revisit-after" content="no" />
<meta name="generator" content="Webocton - Scriptly" />
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">
/* <![CDATA[ */
var titles = <?php echo json_encode($titles); ?>;
/* ]> */
</script>
<script language="javascript" type="text/javascript" src="scripts/main.js"></script>
<script>
$(document).ready(function() {
$("nav li:has(ul)").find("ul").hide();
$("nav li:has(ul)").hover(function(){
$(this).find("ul").slideDown();
}, function(){
$(this).find("ul").hide();
});
});</script>
<link rel="stylesheet" href="style/main.css" type="text/css" />
<link rel="shortcut icon" href="../data/img/BdP-Lilie.ico" type="image/x-icon" />
</head>
<body>
<header>
Dauerhaft bleibender Header
</header>
<nav>
<ul>
<li><a href="index.php"><?php if(isset($session) || $session){echo "Logout";}else{echo "Login";} ?></a></li>
<?php
if(isset($session) || $session){
echo "<li><a href='calendar.php'>Kalender</a></li>
<li><a href='forum.php'>Forum</a></li>";
}
?>
<li><a href="test.php">Test</a></li>
</ul>
</nav>
<div id="swapper"><?php include('pages/' . $page . '.page.php'); ?></div>
<footer>
Dauerhaft bleibender Footer
</footer>
</body>
</html>
Alles anzeigen
Die index.page.php, welche $user und $pass liefert.
<?php
if(isset($session) || $session){
?>
<h1>Logout</h1>
<a href="scripts/logout.php">Ausloggen</a>
<?php
} else{
?>
<h1>Login</h1>
<form action="<?php $_SERVER["DOCUMENT_ROOT"]; ?>index.php" method="post">
Nutzername: <input type="text" name="user" /><br />
Passwort: <input type="password" name="pass" /><br />
<input type="submit" value="Login" /><br />
</form>
<?php
}
?>
Alles anzeigen
Die logout.php
<?php
session_start();
session_destroy();
$root = $_SERVER["DOCUMENT_ROOT"];
header("Location:". $root . "index.php");
?>
Eine test.page.php
<h1>Testseite</h1>
<p>Sollte nach Login angezeigt werden und nach Logout zur index.php zurückleiten.</p>
PS: Spoiler wären in Zukunft vielleicht ganz nützlich!
Fragen zu Details sind erlaubt, schnelle Hilfe erhofft. Warum bleibt die Session nicht bestehen???
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.