Webseite in NodeJS oder PHP?

Hallo,

ich bin gerade dabei eine kleine Webseite zu schreiben, die muss gar nicht so viel können: kleines CMS, Benutzer sollen sich registrieren und Nachrichten empfangen und schreiben können (würde das gerne als Echtzeitchatsystem, sprich Websockets, lösen).

In PHP kenne ich mich weitestgehend aus - NodeJS ist ziemliches Neuland für mich. Trotzdem habe ich es nun erstmal mit NodeJS versucht, weil ich mir das gerne einmal ansehen wollte (probiere gerne was neues).

Nun habe ich das CMS fertig, bin ich aber an dem Punkt wo ich ein Zwischenfazit fassen wollte. Ich bin mir nicht sicher, ob ich nun bei NodeJS bleiben soll oder ob ich in PHP neu anfangen soll (ein CMS ist nun nicht so viel Aufwand, dass mich ein Neuanfang stören würde).

Warum ich Zweifel habe ist folgendes:

  • NodeJS ist asynchron, das macht viele Dinge komplizierter, bzw. selbst einfachste Dinge muss man sehr viel mehr planen und man kommt irgendwie schnell in eine nie enden-wollende Abfolge von Callbacks (ich finde auch Promises irgendwie nicht so geil, was das angeht)
  • Mir kommt NodeJS sehr "unbeständig" vor. Mir ist aufgefallen, dass vorallem bei Paketen die man sich dazu installiert oft gerne von einer Version auf die andere alles bestehende umgeworfen wird - das finde ich bei PHP entspannter, da kann man auch veraltete Sachen noch eine Weile nutzen, sodass man sich nach und nach umstellen kann und sich in alles neue einarbeiten kann (und ich weiß, NPM ist nicht NodeJS, aber ich würde sagen es gehört doch irgendwie zwingend dazu)
  • ...in NodeJS kann ein Fehler, den man nicht abfängt, zum kompletten Absturz des Webservers führen. Das macht mir irgendwie Sorge und da ist man bei PHP doch besser dran: ein Fehler sorgt in der Regel nur dafür, dass diese Aktion nun abgebrochen wird aber die Webseite für alle anderen wie gewohnt weiter läuft.

Meine Frage, an all die die bis hierhin gelesen haben: Kommt mir das alles nur am Anfang so schlimm vor und NodeJS ist trotzdem eine gute Wahl oder würdet ihr auch eher raten zu PHP zu wechseln?

Ich freue mich über jede Meinung :)

Computer, Webseite, Programmieren, PHP, Softwareentwicklung, Webserver, node.js
Symfony authentication funktioniert nicht?

Guten Tag,

für mein Symfony-Projekt habe ich beschlossen, das von Symfony miglieferter Security Bundle für die User-Authentifikation zu verwenden.

Ich habe mich nach folgenden Dokuemntationen durchgearbeitet:
https://symfony.com/doc/current/security.html
https://symfony.com/doc/current/security/form_login_setup.html
https://symfony.com/doc/current/testing.html#doctrine-fixtures

Hier meine Dateien:

SecurityController: https://hastebin.com/tiruyoteco.php

LoginAuth. https://hastebin.com/abewapanod.php

Dummy User: https://hastebin.com/epemuqihoz.php

Ich habe nun einen SecurityController, einen LoginFormAuthenticator, eine login.html.twig und eine security.yaml.

All diese Sachen sind auto_generiert und wurden von mir nicht verändert. Ferner habe ich einen dummy User angelegt, welcher den Benutzernamen "Test" und das Passwort "Test" hat.

Möchte ich mich jetzt testweise einloggen, lädt die Seite einfach neu, ohne dass ich einen Error oder einen Success bekomme.

Hier der Code der login.html.twig [2]

{% extends 'base.html.twig' %}

{% block title %}Log in!{% endblock %}
  {% block home %}active{% endblock %}
{% block stylesheets %}
    <link href="{{ asset("css/login.css") }}" rel="stylesheet">
{% endblock %}

{% block body %}

    <div class="container">
        <form class="text-light" method="post">
            {% if error %}
                <div class="alert alert-danger">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
            {% endif %}

            {% if app.user %}
                <div class="mb-3">
                    You are logged in as {{ app.user.username }}, <a href="{{ path('app_logout') }}">Logout</a>
                </div>
            {% endif %}
            <h2 class="text-center mb-5">Login</h2>
            <div class="mb-3">
                <input type="text" class="form-control text-light form-control-lg " placeholder="Username" id="exampleInputEmail1" value="{{ last_username }}" name="username" aria-describedby="emailHelp" required>
            </div>
            <div class="mb-3">
                <input type="password" name="password" placeholder="Password" class="form-control text-light form-control-lg " id="exampleInputPassword1" required>
            </div>
            <div class="d-flex justify-content-between">
                <button type="submit" class="btn btn-outline-success">Einloggen</button>
                <a href="./register" class="btn btn-outline-primary">Registrieren</a>
            </div>
            <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
        </form>
    </div>
{% endblock %}

meine Frage ist nun, an welchen Stellen ich nach dem fehler suchen soll oder ob ihr schon eine erkennt.

Vielen Dank.

mfg. Anton

Computer, Technik, Programmieren, Framework, PHP, Webentwicklung, laravel
PHP in Dateien schreiben?

Hallo, ich habe vor, eine Seite zu erstellen, auf welcher man ein pin eingeben muss und dieser überprüft wird ( komme aus C++ ). Das überprüfen ist auch nicht das Problem. Ich wollte es erweitern, indem die falschen pins die eingegeben worden sind in eine text datei auf meinem root geschrieben werden, auf welchem debian 10 installiert ist.

Mein Code sieht wie folgt aus:

form:

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>LOGIN</title>
</head>
<body>
    <form action="welcome.php" method="POST">
        <h1>LOGIN</h1> <br />
        <p>Bitte geben Sie ihren Pin ein um fortzufahren.</p>
        <input type="text" name="pin"/>
        <input type="submit"/>
        
    </form>
</body>
</html>

und die Überprüfung, usw...

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>FAF</title>
</head>
<body>
    <?php 
    $pinvar = $_POST["pin"];
    if($pinvar != "1337"){
        echo "Der Code $pinvar ist falsch.";
    }else{
        echo "Willkommen zurück.";
        $handle = fopen("logs.txt", "w");
        fwrite($handle, "$pinvar \n");
    }


    
    ?>
</body>
</html>

Warum schreibt es nicht in die Textdatei ? Was habe ich falsch gemacjh0t

Danke im Voraus

Computer, HTML, Programmieren, Programmierung, CPP, PHP, Webdesign, Webdevelopment, Webentwicklung
Kommunikation PHP->Python?

Guten Tag,

ich arbeite gerade an einem Discord-Bot, welcher nun die Funktion bekommen soll, deadlines zu setzen an welchen Resultate erwartet werden.

An sich ist dies kein Problem, da ich den Bot (im Idealfall) auf meinem Raspberry PI durchlaufen lasse und so die Termine im Script gespeichert werden können.

Nun kann es aber sein, dass der Bot ausfällt und die Termine dann alle weg sind. Aus diesem Grund will ich die Termine zusätzlich über MYSQL speichern. Auch das ist erstmal kein Problem. Jedoch möchte zusätzlich ich die Funktion implementieren, dass man Termine auch über eine Website hinzufügen kann.

Hier stellen sich nun das Problem auf: Wie bekommt mein Python-Script mit, dass ein neuer Termin in der Datenbank angelegt wurde?

Ich hatte überlegt, einfach eine Schleife dauerhaft die DB abfragen zu lassen, aber das fühlt sich nicht sonderlich effizient an.

Des Weiteren soll an einem gewissen Zeitpunkt vor dem Termin daran erinnert werden, dass dieser stattfindet.

Auch hier hatte ich an eine Schleife gedacht, aber am coolsten wäre irgend ein on_date() Event falls es sowas gibt.

Hier der Code des Commands und der Funktion, wenn es was bringt.

def add_deadline(date, content, assignment, created_date, created_user):
    sql = "INSERT INTO deadlines (date, content, assignment, created_date, created_user) VALUES (%s, %s, %s, %s, %s)"
    val = (date, content, assignment, created_date, created_user)
    mycursor.execute(sql, val)
    mydb.commit()

@bot.command(name="deadline")
async def set_deadline(ctx, date, content, assignment):
    add_deadline(date, content, assignment, datetime.now(), ctx.message.author.id)
    if assignment == 1:
        desc = "Zu diesem Termin wird eine Abgabe erwartet!"
    else:
        desc = ""
    embedVar = discord.Embed(title=f"Nächste Konsultation wurde auf {date} gesetzt",
                             description=desc,
                             color=0xffb01f)
    if content != 0:
        embedVar.add_field(name="Topic", value=content, inline=False)

    channel = await check_channel("termine", ctx)
    print(channel)

    await channel.send(embed=embedVar)

Ich hoffe ihr könnt mir helfen.

mfg. Anton

PS: Sind die Fragen, die ich hier im Forum stelle zu ausformuliert?

Computer, Technik, Programmieren, Datenbank, PHP, Python, Technologie, Socket, discord, discord.py
PHP: Stimmt dieser Bereich?

In der MySQL-Datenbank sollen Daten überschrieben werden, die der Nutzer zuvor eingegeben hat. Ich habe das mithilfe von Prepared Statements gelöst, aber es scheint so, als ob nach dem Setzen der SQL-Variable die Ausführung abbricht. Es gibt keine Fehlermeldung. Der ""echo "sql set"; ""-Befehl ist das Letzte, was ausgeführt wird.

if (htmlspecialchars($_GET["validate_input"]) == "yes") {
  echo "validate_input is yes<br>";
  
  $specialchars_country = htmlspecialchars($_POST["country"]);
  $specialchars_pb_id = htmlspecialchars($_POST["pb_id"]);
  $specialchars_pb_type = htmlspecialchars($_POST["pb_type"]);
  $specialchars_bio1 = htmlspecialchars($_POST["bio1"]);
  $specialchars_bio2 = htmlspecialchars($_POST["bio2"]);
  $specialchars_bio3 = htmlspecialchars($_POST["bio3"]);

  echo "variables set";
  // Check input errors before inserting in database
  #if () {

  // Prepare an insert statement
  $sql = "UPDATE advanced_data SET (country, bio1, bio2, bio3) VALUES (?, ?, ?, ?) WHERE username='$us'";
  echo "sql set";

  if ($stmt = mysqli_prepare($link, $sql)) {
    // Bind variables to the prepared statement as parameters
    mysqli_stmt_bind_param($stmt, 'sssss', $specialchars_country, $specialchars_bio1, $specialchars_bio2, $specialchars_bio3, );
    echo "params set";

    // Attempt to execute the prepared statement
    if (mysqli_stmt_execute($stmt)) {
      echo "<br>";
      echo "changes saved";

      #header("location: profile.php");
      #exit;
    }
    else {
      echo "<h4>Oops! Something went wrong. Please try again later.</h4>";
    }

    // Close statement
    mysqli_stmt_close($stmt);
  }
}
PC, Server, Computer, sql, HTML, Webseite, MySQL, PHP
Seltsam... im php array steht nur ein variablenwert und gibt keine ausgabe?

Hallo, ich bins wieder, ich hab mir die basics zu php und sql durchgelesen, aber anscheinend tut der code wieder nicht das was er soll, es gibt keine ausgabe mit echo, und mit var_dump steht da nur, dass es ein datenpaar geholt hat aus der db, hoffe jemand kann mir helfen ;), weil nichmal

"echo $output_array[1]['pictureid'].$output_array[1]['filetype'];" bringt eine bildschirmausgabe

<?php
// Initialize the session
session_start();
 
// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
    header("location: login.php");
    exit;
}


$us = $_SESSION["username"];


// Include config file
require_once "config.php";



$last_login = date("Y-md-d H:i:s");
echo nl2br ("$last_login \n");


// Check input errors before inserting in database
if (!empty($last_login)) {
        
    // Prepare an insert statement
    $sql = "UPDATE users SET last_login=? WHERE username=?";
     
    if ($stmt = mysqli_prepare($link, $sql)) {
        // Set parameters
        $param_last_login = $last_login;
        
        // Bind variables to the prepared statement as parameters
        mysqli_stmt_bind_param($stmt, 'ss', $param_last_login, $us);
        
        // Attempt to execute the prepared statement
        if (mysqli_stmt_execute($stmt)) {
            // 
            echo ("the last login date has been set \n");
        } else{
            echo "Oops! Something went wrong. Please try again later.";
        }



        // Close statement
        mysqli_stmt_close($stmt);
    }
}





$sql = "SELECT pictureid, filetype FROM pictures ORDER BY pictureid DESC LIMIT 0,5";
$result = $link -> query($sql);
$output_array = $result -> fetch_assoc();


var_dump($output_array);



while ($output_array = $result->fetch_assoc())
{
   echo $outputarray['pictureid'];
}


echo $output_array[0]['pictureid'].$output_array[0]['filetype'];
echo $output_array[1]['pictureid'].$output_array[1]['filetype'];
echo $output_array[2]['pictureid'].$output_array[2]['filetype'];




$result -> free_result();


// Close connection
mysqli_close($link);


echo "Willkommen zurück   ", $_SESSION["username"], "  !";


?>


 
PC, Computer, Technik, sql, HTML, Programmieren, Informatik, MySQL, PHP
warum bleibt last_login NULL?

ich hab ein script, welches nach dem login das letzte anmeldedatum in die mysql datenbank schreiben soll aber es bleibt NULL und ändert sich nicht

<?php
// Initialize the session
session_start();
 
// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
    header("location: login.php");
    exit;
}


$us = $_SESSION["username"];


// Include config file
require_once "config.php";


$last_login = date("d/m/Y");
echo $last_login;


// Check input errors before inserting in database
if(empty($last_login)){
        
    // Prepare an insert statement
    $sql = "UPDATE users SET last_login='$last_login' WHERE username=$us"; // VALUES (?)
     
    if($stmt = mysqli_prepare($link, $sql)){
        // Bind variables to the prepared statement as parameters
        mysqli_stmt_bind_param($stmt, 's', $param_last_login);
        
        // Set parameters
        $param_last_login = $last_login;
        
        // Attempt to execute the prepared statement
        if(mysqli_stmt_execute($stmt)){
            // Redirect to login page
            echo "the last login date was set";
        } else{
            echo "Oops! Something went wrong. Please try again later.";
        }


        // Close statement
        mysqli_stmt_close($stmt);
    }
}


// Close connection
mysqli_close($link);

?>
<html>
<head>
</head>
<body>
<?php echo "Willkommen zurück   ", $_SESSION["username"], "  !";
?>
</body>
</html>
warum bleibt last_login NULL?
Computer, sql, HTML, IT, Webseite, Programmieren, Datenbank, Informatik, MySQL, PHP

Meistgelesene Fragen zum Thema PHP