PHP Form action post, an die selbe Datei

Cr41s3

Ensign
Registriert
Dez. 2012
Beiträge
246
Hallo zusammen.

Ich habe mal wieder ein kleines Problem mit meinem Script.
Ich möchte, dass man ein neues Passwort eingibt und dann klickt man auf Submit und dann sollen die Werte an die selbe Datei nochmal geschickt werden, da eine Datei included wird, die es erkennt, wenn alle gesuchten Werte definiert sind.

Und mein SQL Query will irgendwie nicht.
Bekomme immer meine $msg aus dem Else Part, aber wenn ich $stmt_code->rowCount() ausgebe, kommt 1 bei raus -> Zeile existiert doch?
Und kann man auch nur zählen, da ich eigentlich gar nichts selecten will, außer um zu überprüfen, dass der resetcode existiert.

So nun hier mein Code(ja noch bisschen durcheinander^^)

PHP:
<?php
include_once 'includes/config.php';
include_once 'includes/db_connect.php';
include_once 'includes/reset.inc.php';
$msg='';
$error_msg="";
if(!empty($_GET['code']) && isset($_GET['code']))
{
	
	$code = $pdo->quote($_GET['code']);
	$params = array(':code' => $code);
    if ($stmt_code = $pdo->prepare("SELECT uid FROM users WHERE resetcode = :code LIMIT 1")) {

        $stmt_code->execute($params);

        if($stmt_code->rowCount() == 1)
        {
            $resetfile = "reset.php?code=".$code;
            $_POST['resetcode'] = $_GET['code'];

			echo "<!DOCTYPE html>
            <html>
                <head>
                    <title>password reset</title>
                    <script type='text/JavaScript' src='js/sha512.js'></script>
                    <script type='text/JavaScript' src='js/forms.js'></script>
                    <!-- Set the viewport width to device width for mobile -->
                    <meta name='viewport' content='width=device-width' />
                </head>
                <body>
                    <form action='<?php echo $resetfile ?>'
                            method='post' 
                            name='resetpw_form'>
                        Password: <input type='password'
                                         name='password'
                                         id='password'/><br>
                        Confirm password: <input type='password' 
                                                 name='confirmpwd' 
                                                 id='confirmpwd' /><br>
                        <input type='button'
                               value='Submit'
                               onclick='return passwordresetformhash(this.form,
                                               this.form.password,
                                               this.form.confirmpwd);' /> 
                    </form>
                </body>
            </html>";
        }
        else
        {
            $msg="This resetcode does not exist";
        }
    }
}

?>
<?php echo $msg; ?>
<?php echo $error_msg; ?>
 
<form action=""></form>

zeigt auf die URL mit der die Form aufgerufen wurde.
 
Okey gut, danke. Hätte ich selber draufkommen können.

Jetzt besteht noch das Problem mit der Query.
Und komischer Weise passiert gar nix mehr, wenn ich auf Submit klicke, weder das Javascript wird ausgeführt, noch wird irgendetwas geladen.
 
Schmeiß erst einmal diesen echo-Kram aus dem Code. Wenn du nahtlos zwischen PHP und reinem HTML wechseln willst, dann tue es einfach. Genau dafür gibt es doch ?>. PHP beenden, HTML schreiben, PHP wieder starten. Für Schleifen und Abfragen gibts da auch ne nette Schreibweise:

PHP:
<?php if($value):?>
<p>Abfrage wahr!</p>
<?php else:?>
<p>Abfrage falsch.</p>
<?php endif;?>
 
Geil, danke.
Die Methode kannte ich noch nicht.
Werde ich morgen nach der Schule mal versuchen einzubauen.
Ergänzung ()

Das Beispiel von Daaron verstehe ich nicht so ganz, da ich PHP Befehle und einen HTML Code nach meinem IF Befehl brauche.
Und die SQL Query geht nicht und der HTML Code geht immer noch nicht.
 
Ok, dann ein komplexeres Beispiel aus tatsächlich verwendetem Code (Template eines Contao-Moduls)

PHP:
<?php if ($this->id): ?><input type="hidden" name="id" value="<?php echo $this->id; ?>"><?php endif; ?>
	<?php foreach($this->fields as $field):?>
		<div class="field">
			<label for="<?php echo $field['id'];?>"><?php echo $field['label'];?></label>
			<?php if(($field['type'] == 'select') && is_array($field['value'])):?>
			<select name="<?php echo $field['name'];?>" class="chosen" id="<?php echo $field['id'];?>"<?php foreach($field['data'] as $k=>$v){echo " data-".$k."=\"".$v."\"";}?>>
				<option></option>
				<?php foreach($field['value'] as $value):?>
				<option value="<?php echo $value;?>"><?php echo $value;?></option>
				<?php endforeach;?>
			</select>
			<?php elseif($field['type'] == "text"):?>
			<input type="text" name="<?php echo $field['name'];?>" value="<?php echo $field['value'];?>" id="<?php echo $field['id'];?>"<?php foreach($field['data'] as $k=>$v){echo " data-".$k."=\"".$v."\"";}?>>
			<?php endif;?>
		</div>
	<?php endforeach;?>

Wird es jetzt klarer, wie man PHP- und HTML-Code innerhalb eines Dokuments ohne Echo-Orgien kombiniert?
 
Da versuche ich es erstmal lieber mit Echo-Orgien.
Da steige ich nur ein wenig durch, aber ich belasse es erstmal bei dem crap, den ich habe.
Habe ebend damit nichts zum Laufen bekommen und möchte lieber erstmal den Rest zum Laufen bringen.

Trotzdem Danke für den Vorschlag und das Beispiel.

MfG-
 
Ich habe keine Idee mehr.
Brauche wirklich Hilfe.
Ergänzung ()

Habe es nun geschafft, dass der HTML Code wieder geht.
Das lag an meinem URL Rewrite.
Mein Problem liegt nur noch bei den SQL Querys.

Dieser Query:
PHP:
SELECT resetcode FROM users WHERE resetcode = :resetcode LIMIT 1
Gibt mir mit dem eingesetztem resetcode per PHPmyadmin einen User aus.
Aber, wenn ich:
PHP:
echo $select_stmt->rowCount();
ausfühe, bekomme ich 0 als Antwort.
Hier mein Code Snippet:
PHP:
$select_params = array(':resetcode' => $resetcode);
    $prep_select_stmt = "SELECT resetcode FROM users WHERE resetcode = :resetcode LIMIT 1";
    $select_stmt = $pdo->prepare($prep_select_stmt);
echo $select_stmt->rowCount();
 
Zurück
Oben